3

以下のコード (SO から取得) を使用して、いくつかのデータを PHP スクリプトに投稿しました。

HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(Web.API_PREFIX_GENERAL + "ajax/process.AL.php");

MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
reqEntity.addPart("mail", new StringBody("abcd@abcd.com"));
reqEntity.addPart("remote", new StringBody("1"));
reqEntity.addPart("altitle", new StringBody("GHI"));
reqEntity.addPart("aldesc", new StringBody("JKL"));
reqEntity.addPart("t", new StringBody("N"));
reqEntity.addPart("lat", new StringBody(lati));
reqEntity.addPart("long", new StringBody(longi));
reqEntity.addPart("p", new StringBody("all"));

httpPost.setEntity(reqEntity);
httpClient.execute(httpPost);

...そして、これは何も生成しません。エラーはありませんが、何も投稿されません。

ただし、以下のようなものを使用し、パーツを追加しないとreqEntity

String url = Web.API_PREFIX_GENERAL + "ajax/process.AL.php?mail=abcd@abcd.com&remote=1&altitle=GHI" +
                    "&aldesc=JKL&t=N&lat=" + lati + "&long=" + longi + "&p=all";

HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);

MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);

httpPost.setEntity(reqEntity);
httpClient.execute(httpPost);

...これは機能します

必要な Apache ライブラリもすべてセットアップしました。では、これがなぜなのか、何か考えはありますか?

MultipartEntity後で画像も投稿する必要があるため、使用する必要があります。

ありがとう。

4

3 に答える 3

1

問題はクライアント側ではなく、サーバー側にあると思います。2 番目の例では、HTTP POST を送信していますが、GET のようなパラメーターを送信しています。

通常、データ ファイルを送信する (つまり、ファイルをアップロードする) 場合はマルチパート リクエストが使用されますが、コードではデータ ファイルを送信していないように見えるため、マルチパート リクエストを使用しないでください。

于 2013-05-02T12:54:50.333 に答える