HttpPost设置请求超时的2种方法:DefaultHttpClient与BasicHttpParams
2014-09-20 18:36
921 查看
通过HttpPost和DefaultHttpClient发送http的post请求时,设置连接超时和读取超时等参数,有2种方法,本人测试了第1种。先上代码。
第1种方法:通过DefaultHttpClient的getParams()方法设置。
第2种:通过BasicHttpParams实例化一个httpparams,将连结超时、读取超时等参数赋给httpparams,然后传递緥DefaultHttpClient(),如下:
2种方法的区别在于:第1种方法,通过DefaultHttpClient自带的方法设置参数;而第2种方法通过声明一个BasicHttpParams来专门存放参数,再传递给DefaultHttpClient。
第2种方法我没有测试过,如果有问题请留言。
第1种方法:通过DefaultHttpClient的getParams()方法设置。
import java.util.List; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.params.CoreConnectionPNames; import org.apache.http.protocol.HTTP; import org.apache.http.util.EntityUtils; import org.json.JSONObject; public class mHttpRequest { /* * 发送post请求 * * @param posturl:接口路径 * @param params:模拟form表单数据 */ public static void mPostForm(String posturl, List<NameValuePair> params) throws Exception { //声明一个httppost绑定参数 HttpPost httppost = new HttpPost(posturl); // 绑定到Entity httppost.setEntity(new UrlEncodedFormEntity(params,HTTP.UTF_8)); //实例化httpclient对象 DefaultHttpClient httpclient = new DefaultHttpClient(); //请求超时 httpclient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 3000); //读取超时 httpclient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT,3000); //执行请求 HttpResponse httpResponse = httpclient.execute(httppost); //返回状态为200 if(httpResponse.getStatusLine().getStatusCode() == 200){ // 得到应答的字符串,这也是一个 JSON 格式保存的数据 String res = EntityUtils.toString(httpResponse.getEntity()); // 应答生成 JSON 对象 JSONObject result = new JSONObject( res); int errcode = result.getInt("errcode"); //String errmsg = result.getString("errmsg"); //返回结果 if(errcode==0){ } else{ } } } }
第2种:通过BasicHttpParams实例化一个httpparams,将连结超时、读取超时等参数赋给httpparams,然后传递緥DefaultHttpClient(),如下:
/* * 发送post请求 * * @param posturl:接口路径 * @param params:模拟form表单数据 */ public static void mPostForm(String posturl, List<NameValuePair> params) throws Exception { //声明一个httppost绑定参数 HttpPost httppost = new HttpPost(posturl); // 绑定到Entity httppost.setEntity(new UrlEncodedFormEntity(params,HTTP.UTF_8)); //实例化BasicHttpParams,绑定超时等参数 BasicHttpParams httpparams = new BasicHttpParams(); //请求超时 HttpConnectionParams.setConnectionTimeout(httpparams, 3000); //读取超时 HttpConnectionParams.setSoTimeout(httpparams, 3000); //将httpparams传递给DefaultHttpClient DefaultHttpClient httpclient = new DefaultHttpClient(); //请求超时 httpclient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 3000); //读取超时 httpclient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT,3000); //执行请求 HttpResponse httpResponse = httpclient.execute(httppost); //返回状态为200 if(httpResponse.getStatusLine().getStatusCode() == 200){ // 得到应答的字符串,这也是一个 JSON 格式保存的数据 String res = EntityUtils.toString(httpResponse.getEntity()); // 应答生成 JSON 对象 JSONObject result = new JSONObject( res); int errcode = result.getInt("errcode"); //String errmsg = result.getString("errmsg"); //返回结果 if(errcode==0){ } else{ } } }
2种方法的区别在于:第1种方法,通过DefaultHttpClient自带的方法设置参数;而第2种方法通过声明一个BasicHttpParams来专门存放参数,再传递给DefaultHttpClient。
第2种方法我没有测试过,如果有问题请留言。
相关文章推荐
- 设置DefaultHttpClient和HttpClient的超时时间的方法
- HttpClientUtils.post不设置超时时间容易导致,请求无法返回
- go http.Get请求 http.Post请求 http.PostForm请求 Client 超时设置
- PHP模拟POST提交的2种方法 curl,fsockopen,HttpClient
- java中用httpClient请求service,httpPost方法示例
- http请求设置setConnectTimeout()方法超时无响应
- android httpget httppost 请求,超时参数的设置
- Android开发 httpClient post方法请求tomcat服务器实现注册登陆
- HTTP Get和Post请求设置超时
- HttpClient连接请求超时设置
- httpcomponents-client-4.3.5实现http的post请求和get请求方法
- httpClient post请求设置
- httpClient在请求时设置代理服务器(Http Proxy)的方法
- Apache 大三方法HTTP请求链接响应之HttpClient的GET和POST工具类封装
- [小代码]用HttpClient调POST请求方法
- HttpUrlConnection与HttpClient的post、get的请求网络数据的方法
- android - DefaultHttpClient设置超时.
- Android 网络请求方式之HttpClient,GET,POST,PUT请求使用方法
- 设置Apache的HttpClient请求时间超时
- okHttpClient异步同步的get和post请求方法