0

Androidアプリをサーブレットサイトに接続したいのですが、アプリからURLにデータを渡す必要があります

誰でも私を助けることができますか?

2 つのパラメーターを渡すためにこのコードを作成しましたが、例外が生成されます。

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);
4

1 に答える 1

0

UIスレッドをブロックしているようで、UIスレッドが5秒間ブロックされているとこの例外が発生するため、ANR例外が発生します。この問題を解決するには、ThreadまたはAsyncTaskを使用してジョブを実行できるため、UIスレッドブロックされないでください

例 :

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();

UI 要素を更新する場合は、onPostExecute()メソッドを使用して非同期タスクのジェネリック タイプを変更します。

アップデート

次のコードを実行 このコードを使用

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

例外が正常に発生した場合に非同期タスクを呼び出す前に、正常に実行されるアプリを 2 回目に再実行します

于 2012-02-28T12:23:03.840 に答える