Отправка почтового запроса на localhost - PullRequest
3 голосов
/ 22 марта 2012

Мне нужно отправить http-запрос с моего устройства Android на веб-сервер, работающий на моем локальном хосте: 8080 и размещенный на движке приложения Google.

текущий код такой:

    try {

                HttpPost httppost = new HttpPost("http://192.168.2.220:8080");
                httppost.setHeader("Content-type", "application/json");
                ResponseHandler <String> responseHandler = new BasicResponseHandler();
                StringEntity se = new StringEntity(object.toString()); 
           se.setContentEncoding(newBasicHeader(HTTP.CONTENT_TYPE,"application/json"));
                httppost.setEntity(se);
                System.out.println("Request Sent");
                String response = httpclient.execute(httppost, responseHandler);

                String temp = EntityUtils.toString(response.getEntity());



            } catch (ClientProtocolException e) {}
            catch (IOException e) {
            }
        }

Я также попытался установить:

    HttpPost httppost = new HttpPost("http://10.0.2.2:8080");

Во всех случаях ответ нулевой, а принудительное закрытие программы. я правильно отправляю запрос? Может ли кто-нибудь, пожалуйста, направить меня сюда?

Спасибо

Ответы [ 2 ]

7 голосов
/ 22 марта 2012

«Отправить запрос на локальный хост» означает отправить его на локальный компьютер. В вашем случае это будет устройство Android. Вы хотите отправить запрос на свой настольный компьютер, который является удаленным хостом. Проблема в том, что Appengine dev_sever по умолчанию привязывается только к локальному адресу, поэтому к нему нельзя получить удаленный доступ (т. Е. С вашего устройства Android). Вам нужно передать опцию --address, чтобы сделать ее доступной снаружи. Проверьте IP вашего компьютера и передайте его как адрес. Что-то вроде:

dev_appserver.cmd --address=192.168.2.220

Подробности здесь: http://code.google.com/appengine/docs/java/tools/devserver.html

0 голосов
/ 11 октября 2012

Ответ метода httpclient.execute необходимо возвращать для большой переменной HttpResponse , поэтому изменение «String» на «HttpResponse» будет в порядке.

HttpResponse response = (HttpResponse) httpclient.execute(httppost,responseHandler);
...