HttpClient post 请求实例
所需jar包:
commons-codec-1.3.jar
commons-httpclient-3.0.jar
commons-logging-1.1.1.jar
/*** */ package httpClient;import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.URLEncoder;import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpMethod; import org.apache.commons.httpclient.methods.GetMethod; import org.apache.commons.httpclient.methods.PostMethod; import org.apache.commons.httpclient.params.HttpMethodParams;/** * @ClassName: SimpleClient * @Description: TODO(这里用一句话描述这个类的作用) * @author zhoushun * @date 2014年2月13日 上午9:35:17 * */ public class SimpleClient {public static void main(String[] args) throws IOException{HttpClient client = new HttpClient(); //设置代理服务器地址和端口 //client.getHostConfiguration().setProxy("proxy_host_addr",proxy_port);//使用GET方法,如果服务器需要通过HTTPS连接,那只需要将下面URL中的http换成https// HttpMethod method = new GetMethod("http://10.1.14.20:8088/workflowController/service/todo/addTask"); //使用POST方法PostMethod method = new PostMethod("http://10.1.14.20:8088/workflowController/service/todo/addTask"); String s = "http://10.1.48.16:8080/workflow/send-tDocSend/toFormPage.action?modelName=%E6%96%B0%E5%8F%91%E6%96%87%E6%B5%81%E7%A8%8B&incidentNo=65&processName=%E6%96%B0%E5%8F%91%E6%96%87%E6%B5%81%E7%A8%8B&pinstanceId=65&taskUserName=ST/G001000001612549&stepName=%E5%8F%91%E6%96%87%E9%80%9A%E7%9F%A5&taskId=12261064757e7498937e6b29ea80ca&taskuser=ST/G001000001612549&codeId=13";String ms = "{\"app\": \"standardWork\",\"type\": 0,"+ "\"occurTime\": \"2013-11-14 11:22:02\",\"title\": \"-------流程标题-------\","+ "\"loginName\": \"ST/G01008000311\",\"status\": 0,\"removed\": 0,"+ " \"typename\": \"流程名称11\","+ "\"url\": \""+URLEncoder.encode(s,"UTF-8")+"\","+ "\"pname\": \"主流程名称\",\"pincident\": 1,"+ "\"cname\": \"子流程实例号\",\"cincident\": 1,"+ "\"stepName\": \"当前步骤\","+ "\"initiator\": \"ST/G01008000311\"}";((PostMethod) method).addParameter("data", ms);HttpMethodParams param = method.getParams();param.setContentCharset("UTF-8");client.executeMethod(method);//打印服务器返回的状态System.out.println(method.getStatusLine());//打印返回的信息System.out.println();InputStream stream = method.getResponseBodyAsStream();BufferedReader br = new BufferedReader(new InputStreamReader(stream, "UTF-8"));StringBuffer buf = new StringBuffer();String line;while (null != (line = br.readLine())) {buf.append(line).append("\n");}System.out.println(buf.toString());//释放连接 method.releaseConnection();} }
另附上 新浪微博 上的 调用demo中的一些 方法:
public HttpClient(int maxConPerHost, int conTimeOutMs, int soTimeOutMs,int maxSize) {connectionManager = new MultiThreadedHttpConnectionManager();HttpConnectionManagerParams params = connectionManager.getParams();params.setDefaultMaxConnectionsPerHost(maxConPerHost);params.setConnectionTimeout(conTimeOutMs);params.setSoTimeout(soTimeOutMs);HttpClientParams clientParams = new HttpClientParams();// 忽略cookie 避免 Cookie rejected 警告 clientParams.setCookiePolicy(CookiePolicy.IGNORE_COOKIES);client = new org.apache.commons.httpclient.HttpClient(clientParams,connectionManager);Protocol myhttps = new Protocol("https", new MySSLSocketFactory(), 443);Protocol.registerProtocol("https", myhttps);this.maxSize = maxSize;// 支持proxyif (proxyHost != null && !proxyHost.equals("")) {client.getHostConfiguration().setProxy(proxyHost, proxyPort);client.getParams().setAuthenticationPreemptive(true);if (proxyAuthUser != null && !proxyAuthUser.equals("")) {client.getState().setProxyCredentials(AuthScope.ANY,new UsernamePasswordCredentials(proxyAuthUser,proxyAuthPassword));log("Proxy AuthUser: " + proxyAuthUser);log("Proxy AuthPassword: " + proxyAuthPassword);}}}/*** log调试* */private static void log(String message) {if (DEBUG) {log.debug(message);}}/*** 处理http getmethod 请求* */public Response get(String url) throws WeiboException {return get(url, new PostParameter[0]);}public Response get(String url, PostParameter[] params)throws WeiboException {log("Request:");log("GET:" + url);if (null != params && params.length > 0) {String encodedParams = HttpClient.encodeParameters(params);if (-1 == url.indexOf("?")) {url += "?" + encodedParams;} else {url += "&" + encodedParams;}}GetMethod getmethod = new GetMethod(url);return httpRequest(getmethod);}public Response get(String url, PostParameter[] params, Paging paging)throws WeiboException {if (null != paging) {List<PostParameter> pagingParams = new ArrayList<PostParameter>(4);if (-1 != paging.getMaxId()) {pagingParams.add(new PostParameter("max_id", String.valueOf(paging.getMaxId())));}if (-1 != paging.getSinceId()) {pagingParams.add(new PostParameter("since_id", String.valueOf(paging.getSinceId())));}if (-1 != paging.getPage()) {pagingParams.add(new PostParameter("page", String.valueOf(paging.getPage())));}if (-1 != paging.getCount()) {if (-1 != url.indexOf("search")) {// search api takes "rpp"pagingParams.add(new PostParameter("rpp", String.valueOf(paging.getCount())));} else {pagingParams.add(new PostParameter("count", String.valueOf(paging.getCount())));}}PostParameter[] newparams = null;PostParameter[] arrayPagingParams = pagingParams.toArray(new PostParameter[pagingParams.size()]);if (null != params) {newparams = new PostParameter[params.length+ pagingParams.size()];System.arraycopy(params, 0, newparams, 0, params.length);System.arraycopy(arrayPagingParams, 0, newparams,params.length, pagingParams.size());} else {if (0 != arrayPagingParams.length) {String encodedParams = HttpClient.encodeParameters(arrayPagingParams);if (-1 != url.indexOf("?")) {url += "&" + encodedParams;} else {url += "?" + encodedParams;}}}return get(url, newparams);} else {return get(url, params);}}/*** 处理http deletemethod请求*/public Response delete(String url, PostParameter[] params)throws WeiboException {if (0 != params.length) {String encodedParams = HttpClient.encodeParameters(params);if (-1 == url.indexOf("?")) {url += "?" + encodedParams;} else {url += "&" + encodedParams;}}DeleteMethod deleteMethod = new DeleteMethod(url);return httpRequest(deleteMethod);}/*** 处理http post请求* */public Response post(String url, PostParameter[] params)throws WeiboException {return post(url, params, true);}public Response post(String url, PostParameter[] params,Boolean WithTokenHeader) throws WeiboException {log("Request:");log("POST" + url);PostMethod postMethod = new PostMethod(url);for (int i = 0; i < params.length; i++) {postMethod.addParameter(params[i].getName(), params[i].getValue());}HttpMethodParams param = postMethod.getParams();param.setContentCharset("UTF-8");if (WithTokenHeader) {return httpRequest(postMethod);} else {return httpRequest(postMethod, WithTokenHeader);}}/*** 支持multipart方式上传图片* */public Response multPartURL(String url, PostParameter[] params,ImageItem item) throws WeiboException {PostMethod postMethod = new PostMethod(url);try {Part[] parts = null;if (params == null) {parts = new Part[1];} else {parts = new Part[params.length + 1];}if (params != null) {int i = 0;for (PostParameter entry : params) {parts[i++] = new StringPart(entry.getName(),(String) entry.getValue());}parts[parts.length - 1] = new ByteArrayPart(item.getContent(),item.getName(), item.getContentType());}postMethod.setRequestEntity(new MultipartRequestEntity(parts,postMethod.getParams()));return httpRequest(postMethod);} catch (Exception ex) {throw new WeiboException(ex.getMessage(), ex, -1);}}public Response multPartURL(String fileParamName, String url,PostParameter[] params, File file, boolean authenticated)throws WeiboException {PostMethod postMethod = new PostMethod(url);try {Part[] parts = null;if (params == null) {parts = new Part[1];} else {parts = new Part[params.length + 1];}if (params != null) {int i = 0;for (PostParameter entry : params) {parts[i++] = new StringPart(entry.getName(),(String) entry.getValue());}}FilePart filePart = new FilePart(fileParamName, file.getName(),file, new MimetypesFileTypeMap().getContentType(file),"UTF-8");filePart.setTransferEncoding("binary");parts[parts.length - 1] = filePart;postMethod.setRequestEntity(new MultipartRequestEntity(parts,postMethod.getParams()));return httpRequest(postMethod);} catch (Exception ex) {throw new WeiboException(ex.getMessage(), ex, -1);}}public Response httpRequest(HttpMethod method) throws WeiboException {return httpRequest(method, true);}
HttpClient post 请求实例相关推荐
- HttpClient Get请求实例
Httpclient是我们平时中用的比较多的,但是一般用的时候都是去网上百度一下,把demo直接拿过来改一下用就行了,接下来我们来看他的一些具体的用法.Apache HttpComponents™项目 ...
- java httpclient 异步请求_java_java实现HttpClient异步请求资源的方法,本文实例讲述了java实现HttpClien - phpStudy...
java实现HttpClient异步请求资源的方法 本文实例讲述了java实现HttpClient异步请求资源的方法.分享给大家供大家参考.具体实现方法如下: package demo; import ...
- postman发送object_.NetCore HttpClient发送请求的时候为什么自动带上了一个RequestId头部...
奇怪的问题 最近在公司有个系统需要调用第三方的一个webservice.本来调用一个下很简单的事情,使用HttpClient构造一个SOAP请求发送出去拿到XML解析就是了. 可奇怪的是我们的请求在运 ...
- .NetCore HttpClient发送请求的时候为什么自动带上了一个RequestId头部?
奇怪的问题 最近在公司有个系统需要调用第三方的一个webservice.本来调用一个下很简单的事情,使用HttpClient构造一个SOAP请求发送出去拿到XML解析就是了.可奇怪的是我们的请求在运行 ...
- 基于HttpClient接口开发实例(一)
前言 本系列将是本人的一些开发经验总结.由于身处金融IT因而因业务需求需要和银行接口打交道,恰巧最近公司有个项目和这有很大的关系,下面我们将着重从基于HttpClient接口开发的技术点+基本业务点说 ...
- HttpClient发送请求
HttpClient发送请求 前言:前段时间接到一个需求,要求系统中实现一个可以上传语音文件的功能,然后将文件和需要的参数发送到电信的接口上: 开始说起来感觉很简单,但是就真的被折磨了好几天,主要还是 ...
- 给HttpClient添加请求头(HttpClientFactory)
前言 在微服务的大环境下,会出现这个服务调用这个接口,那个接口的情况.假设出了问题,需要排查的时候,我们要怎么关联不同服务之间的调用情况呢?换句话就是说,这个请求的结果不对,看看是那里出了问题. 最简 ...
- HttpClient的连接池||HttpClient的请求参数
连接池 如果每次请求都要创建HttpClient,会有频繁创建和销毁的问题,可以使用连接池来解决这个问题 HttpClientPoolTest.java package cn.itcast.crawl ...
- HttpClient ||GET请求||带参数的GET请求
HttpClient 网络爬虫就是用程序帮助我们访问网络上的资源,我们一直以来都是使用HTTP协议访问互联网的网页,网络爬虫需要编写程序,在这里使用同样的HTTP协议访问网页. 这里使用Java的HT ...
- AJAX ASP/PHP 请求实例
AJAX ASP/PHP 请求实例 · Previous Page · Next Page AJAX ...
最新文章
- 特写李飞飞:她激励了人工智能的发展,更要给人工智能赋予人的价值
- libgdx 3D 测试一
- 携程开源Redis多数据中心解决方案-XPipe
- Java应用程序的简单令牌认证
- 飞秋2010下载企业信息化办公
- 多线程之wait和notify使用注意事项
- comparator比较器用法_电压跟随器的这些点,确定都懂了吗?如果设计成同相端追随反向端会怎样? #运放...
- ISCROLL4 简述
- mfc 服务器文件拷贝到本地,mfc服务器客户端间传输文件
- 各地实时摄像头_你头顶的摄像头将变成有脑子的眼睛!亚马逊推出AWS Panorama,强监控时代来临?...
- 扇贝有道180929每日一句
- 【Python脚本进阶】2.4、conficker蠕虫(终)
- java中英文切换,Java实现多语言切换
- 使用PoEdit翻译PO文件(转贴)
- python 使用GDAL实现栅格tif转矢量shp
- Qt 常用文件对话框及消息对话框使用
- 几十年前的老旧照片如何修复?还不知道旧照片怎么恢复清晰吗?
- 头歌 初识Redis
- 原码/补码的加减运算and溢出判断
- 一键封装app--webapp、HybridApp