HttpUtils http = new HttpUtils();
查看HttpUtils类的构造函数
public HttpUtils() {
this(HttpUtils.DEFAULT_CONN_TIMEOUT)
}
public HttpUtils(int connTimeout) {
HttpParams params = new BasicHttpParams()
ConnManagerParams.setTimeout(params, connTimeout)
HttpConnectionParams.setSoTimeout(params, connTimeout)
HttpConnectionParams.setConnectionTimeout(params, connTimeout)
ConnManagerParams.setMaxConnectionsPerRoute(params, new ConnPerRouteBean(10))
ConnManagerParams.setMaxTotalConnections(params, 10)
HttpConnectionParams.setTcpNoDelay(params, true)
HttpConnectionParams.setSocketBufferSize(params, 1024 * 8)
HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1)
SchemeRegistry schemeRegistry = new SchemeRegistry()
schemeRegistry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80))
schemeRegistry.register(new Scheme("https", DefaultSSLSocketFactory.getSocketFactory(), 443))
httpClient = new DefaultHttpClient(new ThreadSafeClientConnManager(params, schemeRegistry), params)
httpClient.setHttpRequestRetryHandler(new RetryHandler(DEFAULT_RETRY_TIMES))
httpClient.addRequestInterceptor(new HttpRequestInterceptor() {
@Override
public void process(org.apache.http.HttpRequest httpRequest, HttpContext httpContext) throws org.apache.http.HttpException, IOException {
if (!httpRequest.containsHeader(HEADER_ACCEPT_ENCODING)) {
httpRequest.addHeader(HEADER_ACCEPT_ENCODING, ENCODING_GZIP)
}
}
})
httpClient.addResponseInterceptor(new HttpResponseInterceptor() {
@Override
public void process(HttpResponse response, HttpContext httpContext) throws org.apache.http.HttpException, IOException {
final HttpEntity entity = response.getEntity()
if (entity == null) {
return
}
final Header encoding = entity.getContentEncoding()
if (encoding != null) {
for (HeaderElement element : encoding.getElements()) {
if (element.getName().equalsIgnoreCase("gzip")) {
response.setEntity(new GZipDecompressingEntity(response.getEntity()))
return
}
}
}
}
})
}
写完全
system.web.HttpContext还有问题 就
在解决方案视图里面,
点引用,
右击选择添加引用
找到,
System.Web.dll
双击
以后就可以使用了。
1.创建httpWebRequest对象HttpWebRequest不能直接通过new来创建,只能通过WebRequest.Create(url)的方式来获得。WebRequest是获得一些列应用层协议对象的一个统一的入口(工厂模式),它根据参数的协议来确定最终创建的对象类型。所以我们的程序里面有一个对返回对象的类型进行测试的过程。2.初始化HttpWebRequest对象这个过程提供一些http请求常用的属性:agentstring,contenttype等其中agentstring比较有意思,它是用来识别你用的浏览器名字的,通过设置这个属性你可以欺骗服务器你是一个IE,firefox甚至是mac里面的safari。很多认真设计的网站都会根据这个值来返回对用户浏览器特别优化过的代码。3.附加要POST给服务器的数据到HttpWebRequest对象附加POST数据的过程比较特殊,它并没有提供一个属性给用户存取,需要写入HttpWebRequest对象提供的一个stream里面。4.读取服务器的返回信息读取服务器返回的时候,要注意返回数据的encoding。如果我们提供的解码类型不对会造成乱码。比较常见的是utf-8和gb2312之间的混淆,据我测试,国内的主机一般都是gb2312编码的。一般设计良好的网站会把它编码的方式放在返回的httpheader里面,但是也有不少网站根本没有,我们只能通过一个对返回二进制值的统计方法来确定它的编码方式。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)