开发者社区> 问答> 正文

关于HttpClient请求过多后,响应不过来的问题 400 请求报错 

private int send(String URLHost, String URLPort, String LoginID, String LoginPWD, String uid, String MsgBody, String wapurl,Map otherMap){
 String strResult = "999";
try{
// http地址          
String httpUrl = new StringBuffer("http://").append(URLHost).append(":").append(URLPort).append(this.context) .toString() ;         
//   System.out.println("=======begin===mochasoft=message==="+httpUrl);

HttpParams paramsw = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(paramsw, 5 * 1000);
//HttpPost连接对象          
HttpPost httpRequest = new HttpPost(httpUrl);          
//使用NameValuePair来保存要传递的Post参数        
List<NameValuePair> params = new ArrayList<NameValuePair>();          
//添加要传递的参数          
params.add(new BasicNameValuePair("LoginID", LoginID));   
params.add(new BasicNameValuePair("LoginPWD", LoginPWD));  
params.add(new BasicNameValuePair("MsgBody", MsgBody));  
params.add(new BasicNameValuePair("uid", uid));  
params.add(new BasicNameValuePair("appBusiNum", ""));  
params.add(new BasicNameValuePair("SmsType", "0"));  

params.add(new BasicNameValuePair("sendUid", otherMap.get("sendUid")==null?"":(String)otherMap.get("sendUid")));  
params.add(new BasicNameValuePair("sendUserName", otherMap.get("sendUserName")==null?"":(String)otherMap.get("sendUserName")));  
params.add(new BasicNameValuePair("sendPhone", otherMap.get("sendPhone")==null?"":(String)otherMap.get("sendPhone")));  
params.add(new BasicNameValuePair("extend1", otherMap.get("extend1")==null?"":(String)otherMap.get("extend1")));  
params.add(new BasicNameValuePair("extend2", otherMap.get("extend2")==null?"":(String)otherMap.get("extend2")));  
params.add(new BasicNameValuePair("extend3", otherMap.get("extend3")==null?"":(String)otherMap.get("extend3")));  
//设置字符集             
HttpEntity httpentity = new UrlEncodedFormEntity(params, "utf-8");              
//请求httpRequest             
httpRequest.setEntity(httpentity);              


//取得默认的HttpClient              
HttpClient httpclient = new DefaultHttpClient(paramsw);    
//   HttpClient httpclient =HttpConnectionManager.getHttpClient();
//取得HttpResponse 
//   System.out.println("======================="+httpclient.);
HttpResponse httpResponse = httpclient.execute(httpRequest);              
//HttpStatus.SC_OK表示连接成功              
System.out.println("============================"+httpResponse.getStatusLine().getStatusCode());
if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK)              
{                 
//取得返回的字符串                  
strResult = EntityUtils.toString(httpResponse.getEntity());   
System.out.println("请求成功"+strResult);
}              
else             
{                  
System.out.println("请求失败");
}          
}catch(Exception e){
e.printStackTrace();
}
 return Integer.parseInt(strResult);
  }

有什么优化的方法??

展开
收起
kun坤 2020-05-29 10:55:07 1117 0
1 条回答
写回答
取消 提交回答
  •     有没具体的实例参考下 。 ######oschina上就有:http同步异步的对比 http://my.oschina.net/yilian/blog/185990######是哪边响应不过来?请求方还是服务方?######  服务端  现在想客户端和服务端都做优化   想知道客户端需要怎么优化######

    引用来自“lewjeen”的答案

      服务端  现在想客户端和服务端都做优化   想知道客户端需要怎么优化
    服务端响应不过来,和httpClient 没什么关系。想办法提高服务器的并发量吧。 ###### 1:采用并发编程模式,通过多线程处理并发的http请求,充分利用CPU资源 2:采用最新的HttpClient4.3异步模式,可以提高发送接收的效率 3:减少日志的输出
    2020-05-29 12:01:35
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载