Я разрабатываю для Google Glass и проблемы с загрузкой файлов из Glass в приложение сервлета, которое я использую для управления вызовами API. Я установил идентификатор клиента и секрет для аутентификации вызовов api из приложения сервлета, используя консоль разработчика. Я видел эти ссылки упоминания запросы HTTP из стекла:
HTTP Requests in Glass GDK 1
Google Glass upload files using http-client
... но они не были невероятно полезны. У меня есть разрешения для Интернета, установленные в файле манифеста. Это код, у меня есть:Может ли HTTP-запрос отправляться из стекла?
public class MyAsyncTask extends AsyncTask<Void, Void, Void> {
private static final String TAG = "MyAsyncTask";
private static String FILE_PATH;
private String fileType;
private static final String HOST_URL="http://10.0.2.2:8080/main";
private static java.io.File fileToUpload;
public MyAsyncTask(String filePath){
FILE_PATH=filePath;
fileToUpload=new java.io.File(FILE_PATH);
Log.d(TAG,FILE_PATH);
fileType=FILE_PATH.substring(FILE_PATH.indexOf("."));
}
@Override
protected Void doInBackground(Void... params) {
post();
return null;
}
private int post() {
int resultCode = 0;
String url = HOST_URL;
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(url);
List<NameValuePair> urlParameters = new ArrayList<NameValuePair>();
urlParameters.add(new BasicNameValuePair("source", "glass"));
try {
post.setEntity(new UrlEncodedFormEntity(urlParameters));
HttpResponse response = client.execute(post);
System.out.println("\nSending 'POST' request to URL : " + url);
System.out.println("Post parameters : " + post.getEntity());
System.out.println("Response Code : " +
response.getStatusLine().getStatusCode());
resultCode = response.getStatusLine().getStatusCode();
BufferedReader rd = new BufferedReader(
new InputStreamReader(response.getEntity().getContent()));
StringBuffer result = new StringBuffer();
String line = "";
while ((line = rd.readLine()) != null) {
result.append(line);
}
System.out.println(result.toString());
} catch (Exception e) {
Log.e("POST", e.getMessage());
}
return resultCode;
}
Результат вызова MyAsyncTask (Filepath) .Execute(); заключается в том, что соединение отклонено. Я установил URL-адрес на то, что он есть, потому что я читал, что localhost может ссылаться на устройство Glass, как это происходит при запуске эмулятора Android, но сервлет работает на http://localhost:8080.
Для справки Я использую Jetty 6.1.x для своего сервлета.
В чем может быть проблема? Не поддерживает ли Glass обстрел HTTP-запросов? Должен ли я пытаться аутентифицироваться там, где у меня нет? Я был бы рад предоставить любую другую ссылочную информацию по запросу. Я очень признателен за любые рекомендации и опыт. Спасибо.
Google Glass похож на обычное устройство Android. Таким образом, запрос http ведет себя одинаково. Работа в локальной сети не связана с Google, но с любым устройством. Вы должны посмотреть, как получить доступ к локальной сети с устройства Android. Вы найдете свой ответ –
@SimonMarquis. Я подробно рассмотрел это. Я знаю, что локальным хостом работающего устройства является само устройство. Я попробовал сетевой IP-адрес, но все-таки я получил отказ от отказа подключения – cheft
Вы пытались использовать частный локальный IP-адрес машины, на которой запущен сервер? Изменить: взгляните на это, например: http://stackoverflow.com/questions/19132059/how-to-allow-remote-access-to-my-wamp-server-for-mobileandroid –