httpClient 入门知识点

来源:互联网 发布:mysql导出dmp文件 编辑:程序博客网 时间:2024/06/05 20:40

最近自己在写的一个项目涉及要访问websevice,就涉及了httpClient这块的知识,简单的记录一下。

Httpclient要比java.net.URLConnection用着舒服。

写的一个简单的例子来访问某个页面


package me.yndy.srtp.service;import java.io.IOException;import java.io.UnsupportedEncodingException;import java.util.ArrayList;import java.util.List;import me.yndy.srtp.vo.Parameter;import org.apache.http.HttpRequest;import org.apache.http.HttpResponse;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.HttpClient;import org.apache.http.client.entity.UrlEncodedFormEntity;import org.apache.http.client.methods.HttpGet;import org.apache.http.client.methods.HttpPost;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.message.BasicNameValuePair;import org.apache.http.params.BasicHttpParams;import org.apache.http.params.HttpConnectionParams;import org.apache.http.params.HttpParams;import org.apache.http.protocol.HTTP;import org.apache.http.util.EntityUtils;public class SimpleHttpClient {/** * 发送GET请求 * @param url * @param param * @return 返回结果 */public String httpGet(String url,String param){String response = "" ;if(param!=null&¶m.equals("")){url+="?"+param;}//创建http请求参数 int timeOut = 3000;int socketTimeout  = 3000;HttpParams httpParams = new BasicHttpParams();//设置连接超时HttpConnectionParams.setConnectionTimeout(httpParams, timeOut);//设置默认的socket连接超时HttpConnectionParams.setSoTimeout(httpParams, socketTimeout);//通过请求参数构造httpclient实例HttpClient httpClient  = new DefaultHttpClient(httpParams);//构造get方法的实例HttpGet httpGet = new HttpGet(url);try {//发送get请求HttpResponse httpResponse = httpClient.execute(httpGet);//获取返回的状态码int statusCode = httpResponse.getStatusLine().getStatusCode();if(statusCode==200){//获取放回的message,并设置为Stringresponse = EntityUtils.toString(httpResponse.getEntity());}else{response = "返回码:"+statusCode;}} catch (ClientProtocolException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return response;}/** * 发送POST请求 * @param url * @param param 参数 * @return 返回结果 */public String httpPost(String url,List<Parameter> params){String response = null;//创建http请求参数 int timeOut = 3000;int socketTimeout  = 3000;HttpParams httpParams = new BasicHttpParams();//设置连接超时HttpConnectionParams.setConnectionTimeout(httpParams, timeOut);//设置默认的socket连接超时HttpConnectionParams.setSoTimeout(httpParams, socketTimeout);//通过请求参数构造httpclient实例HttpClient httpClient  = new DefaultHttpClient(httpParams);//创建HttpPost实例HttpPost httpPost = new HttpPost(url);try {//设置参数,请求字符串为UTF-8if(params.size()>0){httpPost.setEntity(new UrlEncodedFormEntity(createNameValuePair(params),HTTP.UTF_8));}//发送Post请求HttpResponse httpResponse = httpClient.execute(httpPost);int statusCode = httpResponse.getStatusLine().getStatusCode();if(statusCode==200){//获取放回的message,并设置为Stringresponse = EntityUtils.toString(httpResponse.getEntity());}else{response = "返回码:"+statusCode;}} catch (UnsupportedEncodingException e) {e.printStackTrace();} catch (ClientProtocolException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return response;}/** * 把Parameter类型集合转换成NameValuePair类型集合 * @param params Parameter:实际就是存放了键值对 * @return */private List<BasicNameValuePair> createNameValuePair(List<Parameter> params){List<BasicNameValuePair> nameValuePairs = new ArrayList<BasicNameValuePair>();for(Parameter p:params){BasicNameValuePair pair = new BasicNameValuePair(p.getKey(),p.getValue());}return nameValuePairs;}}


0 0
原创粉丝点击