0

XMLをWebサービスに送信する必要があり、テキストであるため通常のStringEntityで送信できましたが、画像を添付する必要があります。MultipartEntityで試してみましたが、XMLだけでは動作しませんでした。

// 働く

DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost httppost doc = new HttpPost("http://mywebservices.com");

HttpEntity entity = new StringEntity(writer.toString());
httppost.setEntity(entity);

HttpResponse response = httpclient.execute(httppost);
HttpEntity responseEntity = response.getEntity();

//機能しない

DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost httppost doc = new HttpPost("http://mywebservices.com");

// no difference when removing the BROWSER_COMPATIBLE   
MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE); 
entity.addPart("xml", new StringBody(writer.toString()));
httppost.setEntity(entity);

HttpResponse response = httpclient.execute(httppost);
HttpEntity responseEntity = response.getEntity();

そして、送信されているMIMEを確認する方法はありますか?

4

3 に答える 3

4

あなたは単に忘れました:

httppost.setEntity(entity);

ちなみに、パーツのContent-Typeを設定するのはおそらく良い形式です。例:

entity.addPart("xml", new StringBody(writer.toString(),"application/xml",Charset.forName("UTF-8")));

何が送信されているかを確認する限り、HttpClientのロギング機能についてはhttp://hc.apache.org/httpcomponents-client-ga/logging.html(特に「ワイヤーロギング」)を 参照してください。また、それを機能させる方法については、この質問を参照してください。 Androidで。

于 2011-03-29T15:32:21.520 に答える
1

何が送信されているかを確認する別の方法は、リクエストを受信するための独自の「サーバー」を設定することです。これは、netcatを使用したUnixライクなシステムで実行できます。コマンドライン

nc -l 1234

ポート1234でリッスンしているサーバーを起動し、受信したものをすべてエコーします。

その「サーバー」がマシン10.1.2.3にある場合は、を使用しnew HttpPost("http://10.1.2.3:1234")てそこにメッセージを送信できます。

于 2011-03-31T14:08:24.767 に答える
0

同様の問題がありますが、ユーザー/パスを含むマルチパートをacegiセキュリティシステムに送信しています。これは次のように機能します。

request.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));

しかし、これではありません:

try {   
    for (NameValuePair param : params) {
        multientity.addPart(param.getName(), new StringBody(param.getValue(),      Charset.forName(encoding))));
    }
    request.setEntity(multientity);
}
于 2011-05-19T14:01:58.127 に答える