2011-11-16 7 views
0

ちょっとしたスターター情報。私は、MVCプラットフォームを使用してC#.Netで書かれたサーバーと会話するAndoridアプリケーションを書いています。すべての要求は投稿であり、ActionFilter属性はその要求を確実にします。しかし、問題のため.Netは "ST"としてHttpMethodを解析します。私のHttpPost要求が2つの要求に分割されているのはなぜですか?

次は、私は自分のアプリケーションからのWeb要求を行うために、グローバルに使用するコードです:

private String MakeRequest(String action, String params){  
    try { 
     HttpPost request = new HttpPost(mProtocol + mSubDomain + mHost + action); 

     String args; 
     if (params != null) { 
      args = params; 
     } else { 
      args = "[]"; 
     } 

     StringEntity requestEntity; 
     requestEntity = new StringEntity(args); 
     requestEntity.setContentType("application/json;charset=UTF-8"); 
     requestEntity.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE,"application/json;charset=UTF-8")); 
     request.setEntity(requestEntity); 

    HttpResponse response = mHttpClient.execute(request); 

     HttpEntity responseEntity = response.getEntity(); 

     String jString = EntityUtils.toString(responseEntity); 

     return jString; 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return null; 
} 

私が唯一、すべての他の方法がうまく動作する一つの特定の方法でこの問題を抱えています。

次のリンクはトラフィックが含まれているpcapファイルのため、明示的に表示されます。 (私はそれを該当する行だけにフィルタリングしました) http://dl.dropbox.com/u/315661/defect.pcap

+0

また、20-30回の試行で1回動作することがわかりました。一度に、要求は単一のパケットで成功しました。 – MitchellKrenz

答えて

2

POSTで100-Continueの使用を無効にしようとしましたか?通常、サーバーとの通信にオーバーヘッドが加わるだけで、サービス(またはプロキシなどのサービスとデバイスとの間の途中にあるキットなど)が発生した場合は、の問題を引き起こします。 。)あなたが投稿しているのは完全に準拠していません。

HttpProtocolParams.setUseExpectContinue(params, false) 
+0

あなたは命の恩人です!どうもありがとう、私はこれを2度投票することができればと思います。 :D – MitchellKrenz

+0

デベロッパーが通常どこにいるのかを知っているモバイル機器でデフォルトとして有効にしているのは本当に恐ろしい機能です - AndroidHttpClientでもデフォルトでオンになっていると思います。 – Jens

+0

私は 'AndroidHttpClient'を使うべきだと読んでいましたが、私はそれに問題がたくさんあると思っていましたので、私はちょうど今まで偉大な作業をしていた' DefaultHttpClient'に行きました。 :D – MitchellKrenz

関連する問題