Java 为什么我的HttpPost请求被分成两个请求?
只是一点入门信息。我正在编写一个android应用程序,它使用MVC平台与用C#Net编写的服务器进行对话。每个请求都是一个post,ActionFilter属性确保了这一点。但是,由于这个问题,.Net将HttpMethod解析为“ST” 以下是我全局使用的代码,用于从我的应用程序发出web请求:Java 为什么我的HttpPost请求被分成两个请求?,java,android,asp.net-mvc,http-post,Java,Android,Asp.net Mvc,Http Post,只是一点入门信息。我正在编写一个android应用程序,它使用MVC平台与用C#Net编写的服务器进行对话。每个请求都是一个post,ActionFilter属性确保了这一点。但是,由于这个问题,.Net将HttpMethod解析为“ST” 以下是我全局使用的代码,用于从我的应用程序发出web请求: private String MakeRequest(String action, String params){ try { HttpPost request
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文件,该文件包含通信量,因此清晰可见。(我已将其筛选到仅适用的行)
您是否尝试过在您的帖子中禁用100 Continue?您通常不需要它,因为它只会增加您与服务器的通信开销——如果您发布到的服务(或设备与服务之间的任何套件,如代理等)不完全一致,则可能会导致问题
HttpProtocolParams.setUseExpectContinue(params, false)
另外,值得一提的是,在20-30次尝试中,我曾经看到过它能工作一次。在它成功的一次请求中,只有一个数据包。先生,你是一个救生员!非常感谢你们,我希望我能投两次票,我自己永远也不会想到这一点在移动设备上默认启用DIt是一个非常可怕的功能,开发人员通常知道他在哪里发帖-我认为即使是
AndroidHttpClient
也会默认启用它。我读到我应该使用AndroidHttpClient
,但我相信我有很多问题,所以我只使用了DefaultHttpClient
,到目前为止,它一直工作得很好DAndroidHttpClient
附带了一些您应该使用的基本设置,并且还可以防止您在UI线程上执行愚蠢的sh-t操作,除此之外,它非常“meh”。