文档章节

HttpClient3.1 Get与Post提交

叶落花开
 叶落花开
发布于 2017/05/10 10:48
字数 386
阅读 43
收藏 0

Get提交:

public static String invokeUrl(String url, String param,String charset) {
		if(StringUtils.isBlank(charset)){
			charset="UTF-8";
		}
		HttpClient httpClient = new HttpClient();
		PostMethod post = null;
		String resp = null;
		try {

			String invokeUrl = url+(StringUtils.isBlank(param)?"":("?"
					+ URLEncoder.encode(URLEncoder.encode(param, "UTF-8"),
					"UTF-8")));

			// 设置超时时间
			int connectionTime = 20*1000;
			httpClient.getHttpConnectionManager().getParams()
					.setConnectionTimeout(connectionTime);
			httpClient.getHttpConnectionManager().getParams()
					.setSoTimeout(connectionTime);

			post = new PostMethod(invokeUrl);
			post.setRequestHeader("Content-type", "text/html; charset="+charset);
			// 使用系统提供的默认的恢复策略
			post.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
					new DefaultHttpMethodRetryHandler());

			// 执行getMethod
			int statusCode = httpClient.executeMethod(post);
			if (statusCode != HttpStatus.SC_OK) {
				System.err.println("Method failed:" + post.getStatusLine());
			}
			// 读取内容
			InputStream responseBody = post.getResponseBodyAsStream();
			resp = IOUtils.toString(responseBody, "GBK");
			LOG.warn("resp:" + resp);
		} catch (Exception e) {
			LOG.error("调用URL异常",e);
		} finally {
			// 释放连接
			if (post != null)
				post.releaseConnection();
		}
		return resp;
	}

Post提交:

public static String getPostResponse(String url,NameValuePair[] data) throws Exception {
		HttpClient httpClient = new HttpClient();
		PostMethod post = null;
		String resp = null;
		try {
			// 设置超时时间
			int connectionTime = 120*1000;
			httpClient.getHttpConnectionManager().getParams()
					.setConnectionTimeout(connectionTime);
			httpClient.getHttpConnectionManager().getParams()
					.setSoTimeout(connectionTime);

			post = new PostMethod(url);
			 post.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");
			// 使用系统提供的默认的恢复策略
			post.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler());

	       // 设置提交参数
			if(data!=null && data.length>0){
				post.addParameters(data);
			}

			// 执行getMethod
			int statusCode = httpClient.executeMethod(post);
			if (statusCode != HttpStatus.SC_OK) {
				System.err.println("Method failed:" + post.getStatusLine());
			}
			// 读取内容
			InputStream responseBody = post.getResponseBodyAsStream();
			resp = IOUtils.toString(responseBody, "GBK");
			System.out.println("resp:" + resp);
		} catch (Exception e) {
		e.printStackTrace();
		} finally {
			// 释放连接
			if (post != null)
				post.releaseConnection();
		}
		return resp;
	}

提交JSON:

JSONObject jsonParams = new JSONObject();
			jsonParams.put("keyIndex", "");
			jsonParams.put("encryKey", "");
			jsonParams.put("encryStr", "");
			jsonParams.put("interCode", "INTER.SYSTEM.001");
			String requestBody = jsonParams.toJSONString();

	  		HttpClient httpClient = new HttpClient();
	  		PostMethod post = null;
	  		String resp = "";
	  		try {
	  			post = new PostMethod("https://capi.bestpay.com.cn/common/interface");
	  			//post.setParameter("requestdata",requestBody); 
	  			//post.setRequestHeader("Content-type", "application/json; charset=UTF-8");
	  			// 使用系统提供的默认的恢复策略
	  			post.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,new DefaultHttpMethodRetryHandler());
	  			
	  			RequestEntity se = new StringRequestEntity(requestBody, "application/json", "UTF-8");
	  			post.setRequestEntity(se);

	  			int statusCode = httpClient.executeMethod(post);
	  			//System.out.println(statusCode);
	  			if (statusCode != HttpStatus.SC_OK) {
	  				System.err.println("Method failed:" + post.getStatusLine());
	  			}
	  			// 读取内容
	  			InputStream responseBody = post.getResponseBodyAsStream();
	  			ret = IOUtils.toString(responseBody, "utf8");
	  			System.out.println(resp);
	  		} catch (Exception e) {
	  			e.printStackTrace();
	  		} finally {
	  			// 释放连接
	  			if (post != null)
	  				post.releaseConnection();
	  		}

 

© 著作权归作者所有

叶落花开

叶落花开

粉丝 46
博文 72
码字总数 21516
作品 0
武汉
程序员
私信 提问
httpclient4.1.2抓数据Invalid use of SingleClientCo...

httpclient4.1.2抓数据Invalid use of SingleClientConnManager: connection still allocated解决方案 (2012-03-29 10:09:16) 转载▼ 一:Invalid use of SingleClientConnManager: connect......

Jonson
2013/07/23
0
2
httpclient3.1简单使用

1.httpclient采用的maven依赖 2.使用步骤 新建一个 HttpClient对象,作为客户端 新建请求方法对象,比如GetMethod 或 PostMethod 客户端执行所创建的GetMethod或PostMethod 获取返回的数据 ...

Goarulinsman
2016/06/02
70
0
scala akka actor OutOfMemoryError

最近无事用scala +akka actor + httpclient3.1 写了个爬虫,无奈运行一段时间就OutOfMemoryError, 查看代码不知哪里出现了问题。代码不多,条理也算情绪,望高手帮忙看下分析,感激不尽。 ...

疯狂的骑士
2014/05/19
692
1
Holt/kuaipan-sdk-java

##关于KPSDK kpsdk是支持快盘开放API的java版SDK。 关于快盘开放平台更多信息可以看 这里 kpsdk是基于scribe修改而来,使之适应快盘API,让API的调用更简单方便。 关于scribe的更多信息可以看...

Holt
2015/03/13
0
0
httpclient3.1实际超时时间大于设置的超时时间

httpClient3.1设置了连接时间,响应时间都是3秒, 重试机制 但是偶尔会有两三台机器被监控到上游接口的(使用了httpClient)响应时间接近20s 1, 22:33 9028ms tcp连接数597平常时候大概200...

OSC_KBPLUv
2018/06/13
200
2

没有更多内容

加载失败,请刷新页面

加载更多

思维导图XMind 8 Pro 绿化方法(附序列号)

按部就班: Step 1 -全新下载最新版本的 Xmind 8(注必须是英文官方的版本,中文代{过}{滤}理网站的版本修改过,无法使用pj); Step 2 -安装完毕后,点击文末的下载按钮下载pj补丁文件包,将...

一只小青蛙
17分钟前
0
0
数据结构(ER数据库)设计规范

表命名规范 表命名的规则分为3个层级,层级之间通过_分割,例如b_r_identity、d_l_identity。规约为: [leavel]_[type]_[name] [leavel] 表示数据库表的层级和功能,分为: s:业务无关的系统...

随风溜达的向日葵
41分钟前
1
0
阿里Sentinel控制台源码修改-对接Apollo规则持久化

https://github.com/alibaba/Sentinel/wiki/%E5%9C%A8%E7%94%9F%E4%BA%A7%E7%8E%AF%E5%A2%83%E4%B8%AD%E4%BD%BF%E7%94%A8-Sentinel 动态规则扩展 https://github.com/alibaba/Sentinel/wiki......

jxlgzwh
昨天
3
0
在Linux系统中创建SSH服务器别名

如果你经常通过 SSH 访问许多不同的远程系统,这个技巧将为你节省一些时间。你可以通过 SSH 为频繁访问的系统创建 SSH 别名,这样你就不必记住所有不同的用户名、主机名、SSH 端口号和 IP 地...

老孟的Linux私房菜
昨天
5
0
高德API入门教程

项目需求 1、实现打开地图就能定位到中心显示标注点 2、点击标注显示保利可爱岛的详细信息 3、实现导航功能 <!doctype html><html><head> <meta charset="utf-8"> <meta http-......

我叫小糖主
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部