httpClient学习

package com.test;


import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;


import javax.resource.spi.work.ExecutionContext;


import org.apache.http.Header;
import org.apache.http.HeaderElement;
import org.apache.http.HeaderElementIterator;
import org.apache.http.HeaderIterator;
import org.apache.http.HttpEntity;
import org.apache.http.HttpHost;
import org.apache.http.HttpRequest;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.HttpVersion;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.ResponseHandler;
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.client.methods.HttpUriRequest;
import org.apache.http.client.utils.URIUtils;
import org.apache.http.client.utils.URLEncodedUtils;
import org.apache.http.conn.ClientConnectionManager;
import org.apache.http.cookie.ClientCookie;
import org.apache.http.entity.BufferedHttpEntity;
import org.apache.http.entity.ByteArrayEntity;
import org.apache.http.entity.ContentProducer;
import org.apache.http.entity.EntityTemplate;
import org.apache.http.entity.FileEntity;
import org.apache.http.entity.InputStreamEntity;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.cookie.BasicClientCookie;
import org.apache.http.impl.cookie.BasicClientCookie2;
import org.apache.http.message.BasicHeaderElementIterator;
import org.apache.http.message.BasicHttpResponse;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.HttpParams;
import org.apache.http.protocol.BasicHttpContext;
import org.apache.http.protocol.HttpContext;
import org.apache.http.util.EntityUtils;
import org.apache.regexp.recompile;
import org.apache.xerces.util.URI;


public class Test
{


/**
* @param args
* @throws IOException
* @throws ClientProtocolException
*/
@SuppressWarnings("deprecation")
public static void main(String[] args) throws ClientProtocolException,
IOException
{
/*
* // TODO Auto-generated method stub

* @SuppressWarnings({ "deprecation", "resource" }) //创建默认的httpclient实例
* HttpClient httpClient= new DefaultHttpClient(); //创建httpget HttpGet
* httpGet=new HttpGet("http://www.baidu.com"); //创建http post HttpPost
* httpPost= new HttpPost("http://www.baidu.com");
* System.out.println(httpGet.getURI()); //执行get请求 HttpResponse
* response= httpClient.execute(httpGet); //获得响应实体 HttpEntity entity=
* response.getEntity(); //输出响应状态
* System.out.println(response.getStatusLine()); //输出响应内容长度
* System.out.println(entity.getContentLength()); //输出响应内容
* System.out.println(EntityUtils.toString(entity)); //关闭链接,释放资源
* httpClient.getConnectionManager().shutdown();
*/
/**
* 参数
*/
/*
* // 创建默认的httpclient实例 HttpClient httpClient = new DefaultHttpClient();
* // 创建httpget // HttpGet httpGet=new HttpGet("http://www.baidu.com");
* // 创建http post HttpPost httpPost = new
* HttpPost("http://www.baidu.com"); List<NameValuePair> formparams =
* new ArrayList<NameValuePair>(); formparams.add(new
* BasicNameValuePair("type", "houser")); UrlEncodedFormEntity uefEntity
* = new UrlEncodedFormEntity(formparams, "UTF-8");//此处需要utf-8编码
* httpPost.setEntity(uefEntity); // 执行post请求 HttpResponse response =
* httpClient.execute(httpPost); HttpEntity entity=response.getEntity();
* EntityUtils.toString(entity,"UTF-8");//此处需要utf-8解码

* if(entity != null){ InputStream instream = entity.getContent(); }
*/


/**
* 简单生成uri
*/
/*
* java.net.URI uri = null; try { uri =
* URIUtils.createURI("http","www.google.com"
* ,-1,"/search","q=httpclient&btnG=Google+Search&aq=f&oq=",null); }
* catch (URISyntaxException e) { // TODO Auto-generated catch block
* e.printStackTrace(); } HttpGet httpget=new HttpGet(uri);
* System.out.println(httpget.getURI());
*/


/**
* 查询字符串可以参数化
*/
/*
* List<NameValuePair> formparams = new ArrayList<NameValuePair>();
* formparams.add(new BasicNameValuePair("q", "httpclient"));
* formparams.add(new BasicNameValuePair("btnG", "googel search"));
* formparams.add(new BasicNameValuePair("aq", "f")); formparams.add(new
* BasicNameValuePair("oq", null)); java.net.URI uri = null; try { uri =
* URIUtils
* .createURI("http","www.google.com",-1,"/search",URLEncodedUtils
* .format(formparams, "UTF-8"),null); //此处使用了utf8编码方式传入参数 } catch
* (URISyntaxException e) { // TODO Auto-generated catch block
* e.printStackTrace(); } HttpGet httpget=new HttpGet(uri);
* System.out.println(httpget.getURI());
*/


// HttpResponse response= new
// BasicHttpResponse(HttpVersion.HTTP_1_1,HttpStatus.SC_OK,"ok");
/**
* 得到响应状态码等返回信息
*/
// System.out.println("getProtocolVersion: "+response.getProtocolVersion());
// System.out.println("getStatusLine: "+response.getStatusLine());
// System.out.println("getStatusCode: "+response.getStatusLine().getStatusCode());
// System.out.println("getReasonPhrase: "+response.getStatusLine().getReasonPhrase());
// System.out.println(response.getStatusLine().toString());
/**
* 操作响应头信息
*/
// response.addHeader("Set-Cookie","c1=a,path=/;domain=localhost");
// response.addHeader("Set-Cookie","c2=b,path=\"/\";domain=\"localhost\"");
// Header h1= response.getFirstHeader("Set-Cookie");
// System.out.println(h1);
// Header h2= response.getLastHeader("Set-Cookie");
// System.out.println(h2);
// Header[] hs=response.getHeaders("Set-Cookie");
// System.out.println(hs.length);
/**
* 最有效的获取给定类型的所有头部信息,是利用headerIterator接口
*/
// response.addHeader("Set-Cookie","c1=a,path=/;domain=localhost");
// response.addHeader("Set-Cookie","c2=b,path=\"/\";domain=\"localhost\"");
// HeaderIterator iterator=response.headerIterator("Set-Cookie");
// while (iterator.hasNext())
// {
// System.out.println(iterator.next());
// }
/*
* response.addHeader("Set-Cookie","c1=a,path=/;domain=localhost");
* response
* .addHeader("Set-Cookie","c2=b,path=\"/\";domain=\"localhost\"");
* HeaderElementIterator iterator= new
* BasicHeaderElementIterator(response.headerIterator("Set-Cookie"));
* while (iterator.hasNext()) { HeaderElement elem=
* iterator.nextElement(); NameValuePair[] params= elem.getParameters();
* for (int i = 0; i < params.length; i++) {
* System.out.println(""+params[i]); } }
*/


/**
* StringEntity 实体
*/
/*
* StringEntity myEntity= new StringEntity("import message","UTF-8");
* System.out.println("getContentType: "+myEntity.getContentType());
* System
* .out.println("getContent: "+myEntity.getContent());//inputstream
* System.out.println("getContentLength: "+myEntity.getContentLength());
* System
* .out.println("getContentEncoding: "+myEntity.getContentEncoding(
* ));//返回null值
* System.out.println("myEntity内容: "+EntityUtils.toString(myEntity));
* System
* .out.println("myEntitylength: "+EntityUtils.toByteArray(myEntity
* ).length); System.out.println("myEntityContentCharSet: "+EntityUtils.
* getContentCharSet(myEntity));
*/


/**
* 释放连接资源
*/
/*
* HttpClient httpClient = new DefaultHttpClient(); HttpGet httpGet= new
* HttpGet("http://localhost:8080/"); HttpResponse
* response=httpClient.execute(httpGet); HttpEntity entity=
* response.getEntity();
* System.out.println(EntityUtils.toString(entity)); if(entity!=null){
* InputStream ins= entity.getContent(); int byteOne=ins.read(); int
* byteTwo=ins.read(); httpGet.abort();//该连接不被重用,底层的资源将正确的释放 }
*/
/**
* 销毁实体内容
*/
/*
* HttpClient httpClient = new DefaultHttpClient(); HttpGet httpGet =
* new HttpGet("http://localhost:8080/"); HttpResponse response =
* httpClient.execute(httpGet); HttpEntity entity =
* response.getEntity(); //
* System.out.println(EntityUtils.toString(entity)); if (entity != null)
* { long len = entity.getContentLength(); System.out.println(len); if
* (len != -1 && len <=11223) {
* System.out.println(EntityUtils.toString(entity)); } else {
* System.err.println("长度太长了"); } }
*/
/**
* 将实体内容缓存到内存上
*/
/*
* HttpClient httpClient = new DefaultHttpClient(); HttpGet httpGet =
* new HttpGet("http://localhost:8080/"); HttpResponse response=
* httpClient.execute(httpGet); HttpEntity entity= response.getEntity();
* if (entity!=null) { entity=new BufferedHttpEntity(entity);//将实体内容缓存起来
* System.out.println(entity.toString());
* System.out.println(EntityUtils.toString(entity)); //
* System.out.println(EntityUtils.toString(entity)); //
* System.out.println(EntityUtils.toString(entity)); //
* System.out.println(EntityUtils.toString(entity));//可反复多次使用 }
*/


/**
* 产生实体内容,生成实体内容 StringEntity ByteArrayEntity InputStreamEntity(不可重复使用)
* FileEntity
*/


/*
* HttpClient httpClient = new DefaultHttpClient(); File file= new
* File("aaaa.txt"); FileEntity entity= new FileEntity(file,
* "text/plain;charset=\"UTF-8\""); HttpPost httpPost= new
* HttpPost("http://localhost:8080/"); httpPost.setEntity(entity);
* HttpResponse response= httpClient.execute(httpPost);
* System.out.println(EntityUtils.toString(entity));
* System.out.println(EntityUtils.toString(entity));
* System.out.println(EntityUtils.toString(entity));//FileEntity可以反复使用
*/
/**
* 动态的内容实体
*/
/*
* ContentProducer cp=new ContentProducer() {

* @Override public void writeTo(OutputStream outStream) throws
* IOException { // TODO Auto-generated method stub Writer writer= new
* OutputStreamWriter(outStream,"UTF-8"); writer.write("<resone>");
* writer.write("    <content>"); writer.write("    import stuff");
* writer.write("     </Content>"); writer.write("</response>");
* writer.flush();

* } }; HttpEntity entity= new EntityTemplate(cp); HttpPost httpPost=
* new HttpPost("http://localhost:8080/"); httpPost.setEntity(entity);
*/
/**
* form表单实体
*/
/*
* List<NameValuePair> formparams=new ArrayList<NameValuePair>();
* formparams.add(new BasicNameValuePair("param1", "value1"));
* formparams.add(new BasicNameValuePair("param2", "value2"));
* UrlEncodedFormEntity entity= new
* UrlEncodedFormEntity(formparams,"UTF-8"); HttpPost httpPost= new
* HttpPost("http://localhost:8080/"); httpPost.setEntity(entity);
*/
/**
* 内容组块
*/
/*
* StringEntity entity= new
* StringEntity("import message","text/plan;charset=\"UTF-8\"");
* entity.setChunked(true); HttpPost httpPost= new
* HttpPost("http://localhost:8080/"); httpPost.setEntity(entity);
*/
/**
* 响应处理器,自动采取异常处理方式,很谨慎,会确保释放链接
*/
/*
* HttpClient httpClient=new DefaultHttpClient(); HttpGet httpGet= new
* HttpGet("http://localhost:8080/"); ResponseHandler<byte[]>
* handler=new ResponseHandler<byte[]>() {

* @Override public byte[] handleResponse(HttpResponse response) throws
* ClientProtocolException, IOException { // TODO Auto-generated method
* stub

* HttpEntity entity=response.getEntity(); if (entity!= null) { return
* EntityUtils.toByteArray(entity); }else { return null; }

* } }; byte[] response=httpClient.execute(httpGet,handler);
*/


/**
* http执行上下文
*/
/*
* DefaultHttpClient httpClient=new DefaultHttpClient(); HttpContext
* localContext= new BasicHttpContext(); HttpGet httpGet= new
* HttpGet("http://localhost:8080/"); HttpResponse
* response=httpClient.execute(httpGet); // HttpHost tartget=
* localContext.getAttribute(ExecutionContext.HTTP_TARGET_HOST);
* HttpEntity entity=response.getEntity(); if (entity!= null) {
* entity.consumeContent(); }
*/


/**
* cookie
*/
/*
* BasicClientCookie cookie= new BasicClientCookie("name", "value");
* cookie.setValue("0"); cookie.setDomain(".mycompany.com");
* cookie.setPath("/");
*/


/*
* BasicClientCookie cookie= new BasicClientCookie("name", "value");
* cookie.setValue("0"); cookie.setDomain(".mycompany.com");
* cookie.setPath("/"); cookie.setSecure(true);
* cookie.setAttribute(ClientCookie.VERSION_ATTR, "1");
* cookie.setAttribute(ClientCookie.DOMAIN_ATTR, ".mycompany.com");
*/


/*
* BasicClientCookie2 cookie= new BasicClientCookie2("name", "value");
* cookie.setValue("0"); cookie.setDomain(".mycompany.com");
* cookie.setPath("/"); cookie.setSecure(true);
* cookie.setAttribute(ClientCookie.VERSION_ATTR, "1");
* cookie.setAttribute(ClientCookie.DOMAIN_ATTR, ".mycompany.com");
* cookie.setAttribute(ClientCookie.PORT_ATTR, "80,8080");
*/


/*HttpClient httpClient= new HttpClient()
{

@Override
@Deprecated
public HttpParams getParams()
{
// TODO Auto-generated method stub
return null;
}

@Override
@Deprecated
public ClientConnectionManager getConnectionManager()
{
// TODO Auto-generated method stub
return null;
}

@Override
public <T> T execute(HttpHost arg0, HttpRequest arg1,
ResponseHandler<? extends T> arg2, HttpContext arg3)
throws IOException, ClientProtocolException
{
// TODO Auto-generated method stub
return null;
}

@Override
public <T> T execute(HttpHost arg0, HttpRequest arg1,
ResponseHandler<? extends T> arg2) throws IOException,
ClientProtocolException
{
// TODO Auto-generated method stub
return null;
}

@Override
public <T> T execute(HttpUriRequest arg0,
ResponseHandler<? extends T> arg1, HttpContext arg2)
throws IOException, ClientProtocolException
{
// TODO Auto-generated method stub
return null;
}

@Override
public HttpResponse execute(HttpHost arg0, HttpRequest arg1,
HttpContext arg2) throws IOException, ClientProtocolException
{
// TODO Auto-generated method stub
return null;
}

@Override
public <T> T execute(HttpUriRequest arg0, ResponseHandler<? extends T> arg1)
throws IOException, ClientProtocolException
{
// TODO Auto-generated method stub
return null;
}

@Override
public HttpResponse execute(HttpHost arg0, HttpRequest arg1)
throws IOException, ClientProtocolException
{
// TODO Auto-generated method stub
return null;
}

@Override
public HttpResponse execute(HttpUriRequest arg0, HttpContext arg1)
throws IOException, ClientProtocolException
{
// TODO Auto-generated method stub
return null;
}

@Override
public HttpResponse execute(HttpUriRequest arg0) throws IOException,
ClientProtocolException
{
// TODO Auto-generated method stub
return null;
}
};*/








}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值