public class UrlDispatcherUtil {
private HttpClient client = new HttpClient();
public UrlDispatcherUtil(String host, int port, String protocol){
client.getHostConfiguration().setHost(host, port, protocol);
}
public String getRequest(String url) throws Exception{
String destUrl = url.replaceAll("%26", "&");
URI uri = new URI(destUrl,false,"UTF-8");
GetMethod get = new GetMethod( uri.toString() );
client.executeMethod(get);
String r = get.getResponseBodyAsString();
get.releaseConnection();
return r;
}
public void doGet( HttpServletRequest req, HttpServletResponse resp ) throws URIException, NullPointerException{
String queryPath = req.getRequestURI();
StringBuffer sb = new StringBuffer(queryPath);
Set<String > keys = req.getParameterMap().keySet();
sb.append("?");
for(String key : keys){
sb.append(key).append("=").append(req.getParameter(key)).append("&");
}
sb.append("t=").append(System.currentTimeMillis());
queryPath = "/nsa"+sb.toString();
System.out.println(queryPath);
String destUrl = queryPath.replaceAll("%26", "&");
URI uri = new URI(destUrl,false,"UTF-8");
GetMethod get = new GetMethod( uri.toString());
try {
client.executeMethod(get);
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
try {
for( Header header : get.getRequestHeaders() ){
resp.addHeader(header.getName(), header.getValue() );
}
resp.setCharacterEncoding(get.getResponseCharSet());
System.out.println(get.getResponseCharSet());
Streams.copy(get.getResponseBodyAsStream(), resp.getOutputStream());
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
resp.setStatus( get.getStatusCode() );
get.releaseConnection();
}
public void doPost( HttpServletRequest req, HttpServletResponse resp ) throws NullPointerException, HttpException, IOException{
System.out.println("dopost begin --------------------------");
String queryPath = req.getRequestURI();
StringBuffer sb = new StringBuffer("/nsa").append(queryPath);
Set<String > keys = req.getParameterMap().keySet();
URI uri = new URI(sb.toString(),false,"UTF-8");
System.out.println("dopost begin --------------------------"+uri.toString());
PostMethod pt = new PostMethod( uri.toString() );
List<NameValuePair> ptParams = new ArrayList<NameValuePair>();
for(String key : keys ){
NameValuePair pair = new NameValuePair(key, req.getParameter(key));
ptParams.add(pair);
}
NameValuePair[] pa = new NameValuePair[keys.size()];
ptParams.toArray(pa);
pt.setRequestBody( pa );
int statusCode = client.executeMethod(pt);
System.out.println(statusCode+"+++++++++++++++++++++++++++++++++");
if (statusCode == HttpStatus.SC_MOVED_PERMANENTLY
|| statusCode == HttpStatus.SC_MOVED_TEMPORARILY) {
Header locationHeader = pt.getResponseHeader("location");
String location = null;
if (locationHeader != null) {
location = locationHeader.getValue();
System.out.println("The page was redirected to:" + location);
} else {
System.err.println("Location field value is null.");
}
}
for( Header header : pt.getRequestHeaders() ){
resp.addHeader(header.getName(), header.getValue() );
}
resp.setStatus( pt.getStatusCode() );
resp.setCharacterEncoding(pt.getResponseCharSet());
System.out.println(pt.getResponseCharSet());
Streams.copy(pt.getResponseBodyAsStream(), resp.getOutputStream());
pt.releaseConnection();
}
public String postRequest(String url, Map<String,String> params) throws Exception {
PostMethod pt = new PostMethod( url );
List<NameValuePair> ptParams = new ArrayList<NameValuePair>();
for(String key : params.keySet() ){
NameValuePair pair = new NameValuePair(key, params.get(key));
ptParams.add(pair);
}
NameValuePair[] pa = new NameValuePair[params.size()];
ptParams.toArray(pa);
pt.setRequestBody( pa );
int statusCode = client.executeMethod(pt);
if (statusCode == HttpStatus.SC_MOVED_PERMANENTLY
|| statusCode == HttpStatus.SC_MOVED_TEMPORARILY) {
Header locationHeader = pt.getResponseHeader("location");
String location = null;
if (locationHeader != null) {
location = locationHeader.getValue();
System.out.println("The page was redirected to:" + location);
} else {
System.err.println("Location field value is null.");
}
}
String r = pt.getResponseBodyAsString();
pt.releaseConnection();
return r;
}
} :)
分享到:
相关推荐
`httpclent.jar` 是HTTPClient库的可执行文件,包含了所有必需的类和资源,以便在Java项目中直接引用。将这个jar包添加到项目的类路径中,开发者就可以使用HTTPClient的功能来发送HTTP请求并接收响应。 在...
HttpClient是Apache基金会开发的一个Java库,它为Java程序员提供了一个强大的、可信赖的HTTP协议客户端实现。...在Java项目中使用HttpClient,首先需要将必要的jar包添加到项目的类路径中。 ...这两个jar包构成了...
HttpClient是Apache基金会的一个开源项目,它是Java环境下用来发送HTTP请求的客户端库,广泛应用于Web服务的集成、自动化测试以及各种需要与服务器进行交互的应用场景。本篇将详细讲解HttpClient库及其核心组件,...
...HttpClient提供了一种有效的方式,使得开发者可以方便地构造这些请求,发送数据,并处理响应。 HttpClient的几个核心组件包括: ...你可以设置各种配置,如连接超时、重试策略、请求和响应处理策略等。...
HttpClient工具类是Java开发中常用的一个HTTP客户端库,它提供了丰富的功能来执行HTTP请求,如GET、POST等。...以下是对`HttpClient`及其在描述中提到的关键知识点的详细说明: 1. **HttpClient简介** ...
HttpClient 4.5版本是其系列中的一个重要版本,带来了许多改进和新特性。这个版本优化了性能,增强了稳定性,并且兼容最新的Java标准。以下是一些关于HttpClient 4.5的知识点: 1. **基本概念**: ...
本主题将深入探讨如何使用HttpClient和Spring的RestTemplate工具来实现这一目标。这两种方法都是可靠的,但在不同场景下各有优缺点。 ... 1. HttpClient方式: ...CloseableHttpClient httpClient = HttpClients.create...
### 使用HttpClient调用WebService接口详解 #### 一、概述 在现代软件开发中,Web服务(尤其是WebService)作为实现系统间交互的一种重要手段被广泛采用。...本文将详细介绍如何使用HttpClient来调用WebService接口,...
httpclient-4.5.13-sources.jar
赠送jar包:httpclient-4.5.13.jar; 赠送原API文档:httpclient-4.5.13-javadoc.jar; 赠送源代码:httpclient-4.5.13-sources.jar; 赠送Maven依赖信息文件:httpclient-4.5.13.pom; 包含翻译后的API文档:...
这个压缩包"HTTPClient.zip"包含了实现通过HTTPClient调用WebService所需的所有jar包。 在Java中,当我们需要与Web服务进行交互时,HTTPClient是一个理想的选择。...以下是一些关键知识点: ...2. **HttpClient对象**:...
httpClient 工具类,简化请求开发,拿来即用,我用在SpringBoot框架;对于依赖,你可以根据包名导入。
...JavaEyeClient 封装了这些功能,可能包括预设的请求头设置、自动处理编码问题、更友好的异常处理机制等。 ... - GET 请求:JavaEyeClient 可能提供了一个简单的接口来发送 GET 请求,例如 `get(String url, Map, ...
`HttpClent4Demo`这个文件可能包含了一个完整的示例,你可以参考它来学习和实践如何使用HttpClient发送POST请求和JSON数据。 总结来说,HttpClient是Java中强大的HTTP客户端工具,通过它我们可以方便地发送各种HTTP...
1.6.3使用HttpClent下载一网页 // 1、通过HttpGet获取到response对象 CloseableHttpClient httpClient = HttpClients.createDefault(); HttpGet httpGet = new HttpGet("http://www.baidu.com/"); ...
httpclient工具类包含get,post,put,delete请求
标题中的"demo_jd.zip"是一个压缩包文件,其中包含了某个项目或程序的源代码及相关资源。... 在描述中,首先提到了“对京东手机数据爬取”,这表明项目的目标是获取京东网站上的手机相关数据,可能包括但不限于手机...