Я пытаюсь опубликовать сообщение от android до GAE, я получаю исключение неизвестного хоста. Вот мой код,
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://silver-kites.appspot.com");
try {
// Add your data
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("abc", "123"));
nameValuePairs.add(new BasicNameValuePair("xyz", "456"));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
if(entity != null){
InputStream inputStream = entity.getContent();
ResponseText.setText(convertStreamToString(inputStream));
}
} catch (ClientProtocolException e) {
ResponseText.setText(e.getMessage());
} catch (IOException e) {
ResponseText.setText(e.getMessage());
}
Когда я пытаюсь подключиться к localhost: 8888 утра, соединение отключено. Я не знаю, как пройти через это. Помогите мне.
Я тоже пробовал, все еще получая исключение Unknown Host в android. Нужно ли делать какие-либо настройки для доступа к HTTP? или в эмуляторах http не работает?
Я установил <uses-permission android:name="android.permission.INTERNET"></uses-permission>
в android manifest xml. Все еще нет надежды.
Любая помощь? Я проверил в GAE, и мой запрос туда не дошел.
Вот мой код,
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://silver-kites.appspot.com/silverscores");
try {
nameValuePairs.add(new BasicNameValuePair("name", "JP"));
nameValuePairs.add(new BasicNameValuePair("seconds", "123"));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
if(entity != null){
InputStream inputStream = entity.getContent();
ResponseText.setText(convertStreamToString(inputStream));
}
} catch (ClientProtocolException e) {
ResponseText.setText(e.getMessage());
} catch (IOException e) {
ResponseText.setText(e.getMessage());
}
У меня горячая проблема с той же проблемой.
После некоторого поиска в googling и stackoverflowing я нашел решение:
Проверьте, есть ли у эмулятора сеть соединение (значок сети в панель уведомлений) - мой эмулятор не было, поскольку брандмауэр заблокирован это:( Я нашел этот совет здесь.
Проверьте, установлено ли разрешение сети для вашего приложения, добавив строку
<uses-permission
android:name="android.permission.INTERNET"></uses-permission>
в приложении AndroidManifest.xml
файл.
В соответствии с Эмуляторная сеть IP 10.0.2.2
следует использовать вместо localhost
/127.0.0.1
.
localhost
/127.0.0.1
- это IP-адрес устройства Android, а не машина разработчика.
Я делал все хорошо. Только одна проблема заключалась в том, что эмулятор работал в режиме самолета, поэтому он не использует интернет-соединение. Поэтому я получил неизвестное исключение для хоста. Теперь он работает нормально. Спасибо за вашу поддержку.
Попробуйте использовать следующую (имя, значение) пару
nameValuePairs.add(new BasicNameValuePair("name", "123"));
nameValuePairs.add(new BasicNameValuePair("seconds", "456"));
Теперь вы не получите исключение недействительных параметров, но ответ для этого POST - "Ошибка Sever", вы можете проверить с помощью GAE эту ошибку.