это не работает, чтобы подключить приложение Android к странице сервлета для передачи данных - PullRequest
0 голосов
/ 27 февраля 2012

Я хочу подключить мое приложение для Android к моему сервлет-сайту, что мне нужно передать некоторые данные из приложения на URL

Может кто-нибудь мне помочь?

Я написал этокод для передачи двух параметров, но он генерирует исключение:

HttpPost postMethod = new HttpPost("http://androidsaveitem.appspot.com/view");
List<NameValuePair> formparams = new ArrayList<NameValuePair>();
formparams.add(new BasicNameValuePair("description+", "HAANAA"));
formparams.add(new BasicNameValuePair("id+", "11223"));
UrlEncodedFormEntity entity;
entity = new UrlEncodedFormEntity(formparams);
postMethod.setEntity(entity);
DefaultHttpClient hc = new DefaultHttpClient();
HttpResponse response = hc.execute(postMethod);

1 Ответ

0 голосов
/ 28 февраля 2012

кажется, что вы блокируете поток пользовательского интерфейса, и возникает исключение ANR, поскольку, если ваш поток пользовательского интерфейса заблокирован на 5 секунд, это исключение произойдет, чтобы решить эту проблему, вы можете использовать Thread или AsyncTask для выполнения работы, ваш поток пользовательского интерфейса не блокируется

пример:

public myAsnyc extends AsyncTask<Void, Void,Void>{



protected void doInBackground(){

HttpPost postMethod = new HttpPost("http://androidsaveitem.appspot.com/view");
List<NameValuePair> formparams = new ArrayList<NameValuePair>();
formparams.add(new BasicNameValuePair("description+", "HAANAA"));
formparams.add(new BasicNameValuePair("id+", "11223"));
UrlEncodedFormEntity entity;
entity = new UrlEncodedFormEntity(formparams);
postMethod.setEntity(entity);
DefaultHttpClient hc = new DefaultHttpClient();
HttpResponse response = hc.execute(postMethod);



    }
protected void onPostExecute(){

    log.d("myApp", "success");
}

    }

и если вы хотите его выполнить сделать этот звонок

new myAsnyc().execute();

если вы хотите обновить элементы пользовательского интерфейса, используйте метод onPostExecute() и измените универсальный тип асинхронной задачи

UPDATE

выполнить следующий код используйте этот код

try {
      InetAddress i = InetAddress.getByName("http://androidsaveitem.appspot.com/view");
    } catch (UnknownHostException e1) {
      e1.printStackTrace();
    }

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

...