0

私は最初の Android アプリケーションに取り組んでおり、HTTP POST 要求を作成して応答を受信しようとすると、大きな問題が発生します。これらはいくつかの事実です:

  1. AndroidManifest.xml に INTERNET 権限があります。 <uses-permission android:name="android.permission.INTERNET" />
  2. 私は多くの解決策を試しました。URLConnection または HttpURLConnection を使用したソリューションは、空の文字列を返すため機能しません。HttpClient と HttpPost を使用したソリューションが execute() で失敗する - 私は 1 時間グーグルで検索しましたが、それを修正する方法がわかりませんでした。
  3. インターネット接続あり。しかし、問題を解決し、最終的にHTTP POST リクエストを送信する方法がわかりません。

upd:たとえば、このコードは私のプログラムをクラッシュさせます:

public static APIResponse getResponse(String action, Map<String, String> params) throws IOException {
    // Create a new HttpClient and Post Header
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("http://google.com");

    try {
        // Add your data
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
        nameValuePairs.add(new BasicNameValuePair("id", "12345"));
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

        // Execute HTTP Post Request
        HttpResponse response = httpclient.execute(httppost);

    } catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
    } catch (IOException e) {
        // TODO Auto-generated catch block
    }
    return null;
}

更新 2:私の電話では動作しますが、エミュレーターでは動作しません! エミュレータでその動作を修正する方法は?

更新 3:修正済み。

4

1 に答える 1

1

HTTP Postの例を見てください。

また、fiddler2を使用して、HTTP メッセージのデバッグを支援する必要があります。

また、すべての例外を適切にキャッチしているわけではないことに注意してください。最後に一般的な catch ステートメントを追加して、アプリのクラッシュを防ぎ、問題の原因を突き止めることができます。タイムアウトなどの可能性があります。

于 2012-07-02T16:49:36.690 に答える