`
tenderuser
  • 浏览: 61360 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

HttpClent

    博客分类:
  • java
阅读更多
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包

    `httpclent.jar` 是HTTPClient库的可执行文件,包含了所有必需的类和资源,以便在Java项目中直接引用。将这个jar包添加到项目的类路径中,开发者就可以使用HTTPClient的功能来发送HTTP请求并接收响应。 在...

    HttpClent需要jar包

    HttpClient是Apache基金会开发的一个Java库,它为Java程序员提供了一个强大的、可信赖的HTTP协议客户端实现。...在Java项目中使用HttpClient,首先需要将必要的jar包添加到项目的类路径中。 ...这两个jar包构成了...

    HttpClent所需jar包

    HttpClient是Apache基金会的一个开源项目,它是Java环境下用来发送HTTP请求的客户端库,广泛应用于Web服务的集成、自动化测试以及各种需要与服务器进行交互的应用场景。本篇将详细讲解HttpClient库及其核心组件,...

    HttpClent通信jar包

    ...HttpClient提供了一种有效的方式,使得开发者可以方便地构造这些请求,发送数据,并处理响应。 HttpClient的几个核心组件包括: ...你可以设置各种配置,如连接超时、重试策略、请求和响应处理策略等。...

    HttpClent工具类

    HttpClient工具类是Java开发中常用的一个HTTP客户端库,它提供了丰富的功能来执行HTTP请求,如GET、POST等。...以下是对`HttpClient`及其在描述中提到的关键知识点的详细说明: 1. **HttpClient简介** ...

    HttpClient jar包,快来拿呀

    HttpClient 4.5版本是其系列中的一个重要版本,带来了许多改进和新特性。这个版本优化了性能,增强了稳定性,并且兼容最新的Java标准。以下是一些关于HttpClient 4.5的知识点: 1. **基本概念**: ...

    使用httpclient方式和RestTemplate方式调用http及https接口

    本主题将深入探讨如何使用HttpClient和Spring的RestTemplate工具来实现这一目标。这两种方法都是可靠的,但在不同场景下各有优缺点。 ... 1. HttpClient方式: ...CloseableHttpClient httpClient = HttpClients.create...

    httpClient调用webservice接口

    ### 使用HttpClient调用WebService接口详解 #### 一、概述 在现代软件开发中,Web服务(尤其是WebService)作为实现系统间交互的一种重要手段被广泛采用。...本文将详细介绍如何使用HttpClient来调用WebService接口,...

    httpclient-4.5.13-sources.jar

    httpclient-4.5.13-sources.jar

    httpclient-4.5.13-API文档-中文版.zip

    赠送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.zip"包含了实现通过HTTPClient调用WebService所需的所有jar包。 在Java中,当我们需要与Web服务进行交互时,HTTPClient是一个理想的选择。...以下是一些关键知识点: ...2. **HttpClient对象**:...

    httpClient 工具类

    httpClient 工具类,简化请求开发,拿来即用,我用在SpringBoot框架;对于依赖,你可以根据包名导入。

    javaeye api [java httpclient版] 简单封装

    ...JavaEyeClient 封装了这些功能,可能包括预设的请求头设置、自动处理编码问题、更友好的异常处理机制等。 ... - GET 请求:JavaEyeClient 可能提供了一个简单的接口来发送 GET 请求,例如 `get(String url, Map, ...

    HttpClient发送post请求传输json数据

    `HttpClent4Demo`这个文件可能包含了一个完整的示例,你可以参考它来学习和实践如何使用HttpClient发送POST请求和JSON数据。 总结来说,HttpClient是Java中强大的HTTP客户端工具,通过它我们可以方便地发送各种HTTP...

    HttpClient以及获取页面内容应用

    1.6.3使用HttpClent下载一网页 // 1、通过HttpGet获取到response对象 CloseableHttpClient httpClient = HttpClients.createDefault(); HttpGet httpGet = new HttpGet("http://www.baidu.com/"); ...

    HttpClientUtils.java

    httpclient工具类包含get,post,put,delete请求

    demo_jd.zip

    标题中的"demo_jd.zip"是一个压缩包文件,其中包含了某个项目或程序的源代码及相关资源。... 在描述中,首先提到了“对京东手机数据爬取”,这表明项目的目标是获取京东网站上的手机相关数据,可能包括但不限于手机...

Global site tag (gtag.js) - Google Analytics