博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
httpclient 小例子编写
阅读量:6987 次
发布时间:2019-06-27

本文共 3375 字,大约阅读时间需要 11 分钟。

  hot3.png

 

最近这两天帮忙调试接口,用到了httpclient ,自己参照网上方法编写个小例子 ,方便以后查看

-----

 

/** * 远程访问调用方法工具类 *  *  yangy *  */public class RemoteRequestUtils{	public static void main(String[] args) throws HttpException, IOException	{		getRequest(null);	}	/**	 * 远程get请求 方法直接打印返回结果	 * 	 * @param url	 * @param parmete	 * @throws IOException	 * @throws HttpException	 * @throws Exception	 */	public static void getRequest(String url) throws HttpException, IOException	{		// 创建请求对象		HttpClient client = new HttpClient();		client.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET,"utf-8");		//设置超时时间		client.getParams().setSoTimeout(2000);		// 创建远程访问		GetMethod method = new GetMethod(				url);		// 设置成了默认的恢复策略,在发生异常时候将自动重试3次,在这里你也可以设置成自定义的恢复策略		method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,				new DefaultHttpMethodRetryHandler());		// 执行getMethod		int statusCode = client.executeMethod(method);		if (statusCode != HttpStatus.SC_OK)			{				System.err.println("Method failed: " + method.getStatusLine());			}				//获取数据		String responseBody = readInputStream(method.getResponseBodyAsStream());		System.out.println(" Remoter request success :" + responseBody);		// 释放连接		method.releaseConnection();	}	/**	 * 远程post请求 方法直接打印返回结果	 * 	 * @param url	 * @param parmete	 * @throws IOException	 * @throws HttpException	 */	public static void postRequest(String url, NameValuePair[] data)			throws HttpException, IOException	{		// 创建请求对象		HttpClient httpClient = new HttpClient();		// 设置超时时间		httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(				20000);		// 创建POST对象		UTF8PostMethod postMethod = new UTF8PostMethod(				url);		// 设置成了默认的恢复策略,在发生异常时候将自动重试3次,在这里你也可以设置成自定义的恢复策略		postMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,				new DefaultHttpMethodRetryHandler());				// 将表单的值放入postMethod中		postMethod.setRequestBody(data);		// 执行postMethod		int statusCode = httpClient.executeMethod(postMethod);		// HttpClient对于要求接受后继服务的请求,象POST和PUT等不能自动处理转发		System.out.println(statusCode);		String location = "";		// 返回返回结果		if (statusCode == HttpStatus.SC_MOVED_PERMANENTLY				|| statusCode == HttpStatus.SC_MOVED_TEMPORARILY)			{				// 从头中取出转向的地址				Header locationHeader = postMethod.getResponseHeader("location");					if (locationHeader != null)					{						location = locationHeader.getValue();						System.out.println("The page was redirected to:" + location);					} 				else					{						System.err.println("Location field value is null.");					}			} 		else if (statusCode == HttpStatus.SC_OK) // 返回为连接成功			{				// 此处修改为返回为输入流 避免大数量时出错 消耗内存				String responseBody = readInputStream(postMethod						.getResponseBodyAsStream());				System.out.println(" Remoter request success :" + responseBody);			}		// 释放连接		postMethod.releaseConnection();	}	/**	 * 转换Inputstram为字符串	 * 	 * @param responseBody	 *  * @throws IOException	 */	private static String readInputStream(InputStream responseBody)			throws IOException	{		//创建字符串数读取缓存		BufferedReader buffre = new BufferedReader(new InputStreamReader(				responseBody,"utf-8")); //使用utf-8 避免出现乱码		//创建缓存字符串		StringBuffer resBuffer = new StringBuffer(10000);		String resTemp = "";		while ((resTemp = buffre.readLine()) != null)			{				resBuffer.append(resTemp).append("\n"); //读取字符流中数据 目前测试可能存在换行添加			}		return resBuffer.toString();	}}

目前代码能够执行成功, 蛋痛的是 调用对方接口 每次一调用他们的系统就挂掉...

 

转载于:https://my.oschina.net/luckyi/blog/69188

你可能感兴趣的文章
AFNetWorking 2.0 使用
查看>>
VMware克隆Linux系统后,网络问题解决
查看>>
Linux系统下vsftp服务器搭建(二)
查看>>
Citrix User Profile Management 设定参考
查看>>
网络库性能对比
查看>>
博客开张
查看>>
jquery.Callbacks的实现
查看>>
同一环境下新建Standby RAC库
查看>>
随手笔记NO.4
查看>>
未来监护人:FCC专员正在努力推迟网络中立投票
查看>>
LVS负载均衡群集(LVS-NAT)
查看>>
【Zabbix】如何搭建memcached?并使用Zabbix监控memcached?
查看>>
完爆 Best Fit,看阿里如何优化 Sigma 在线调度策略节约亿级成本
查看>>
spring事务
查看>>
NoSQL最新现状和趋势:云NoSQL数据库将成重要增长引擎
查看>>
python系统监控--转载
查看>>
2019年我国云计算行业存在的问题和发展趋势
查看>>
DXF图纸打开后怎么改变保存其格式为DWG?
查看>>
zabbix 监控 介绍
查看>>
SVN使用
查看>>