2

AndroidデバイスからRESTWebサービスに接続し、そこにデータを配置しようとしましたが、取得するのはGET結果だけです。私のウェブサーバーでさえ、それはGETリクエストだと主張しています。私のコードの何が問題になっていますか?

DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPut httpPut = new HttpPut(url);
httpPut.addHeader("Content-Type", "application/xml; charset=utf-8");
httpPut.addHeader("User-Agent", "Android");
HttpEntity entity = new StringEntity(data);
httpPut.setEntity(entity);
HttpResponse response = httpclient.execute(httpPut);
HttpEntity input = response.getEntity();
StringBuilder result = new StringBuilder();
if (input != null) {
    InputStream instream = input.getContent();
    result = convertStreamToString(instream);
    instream.close();
}
httpclient.getConnectionManager().shutdown();
return result.toString();
4

2 に答える 2

0

POSTリクエストでこれが起こりました。私の問題は、ホストのプロキシと mod_rewrite の使用の組み合わせに関連するサーバー側の問題に関連していました。私たちの書き直しは、すべての非 www トラフィックを www ドメインに向け、ホストのプロキシ サーバーがリクエストを GET に変換し、投稿データを削除したすべての場所に向けていました。私たちの簡単な解決策は、最初のリクエストで www バージョンを使用して、書き換えを回避することでした。サーバー側で変更を加える必要はありませんでした (これはトリッキーでした)。

于 2011-07-28T20:02:47.097 に答える
0

JSONStringer を使用すると、問題が解決する可能性があります...

私はこれのためにたくさん苦労しました........

コードは次のようになります...

HttpPut request = new HttpPut("your URL");
JSONStringer json = new JSONStringer()
.object() 
 .key("cname").value(name)
 .key("cmail").value(email)

.endObject();

StringEntity entity = new StringEntity(json.toString());
                     entity.setContentType("application/json;charset=UTF-8");//text/plain;charset=UTF-8
                     entity.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE,"application/json;charset=UTF-8"));
                     request.setEntity(entity); 
                     // Send request to WCF service 
                     DefaultHttpClient httpClient = new DefaultHttpClient();

                     HttpResponse response = httpClient.execute(request); 

ありがとう...

于 2011-02-22T11:12:33.200 に答える