HttpClient post 请求实例

来源:互联网 发布:网络大电影 鬼拳 编辑:程序博客网 时间:2024/06/05 04:53

所需jar包:

commons-codec-1.3.jar
commons-httpclient-3.0.jar
commons-logging-1.1.1.jar


[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. /** 
  2.  *  
  3.  */  
  4. package httpClient;  
  5.   
  6. import java.io.BufferedReader;  
  7. import java.io.IOException;  
  8. import java.io.InputStream;  
  9. import java.io.InputStreamReader;  
  10. import java.net.URLEncoder;  
  11.   
  12. import org.apache.commons.httpclient.HttpClient;  
  13. import org.apache.commons.httpclient.HttpMethod;  
  14. import org.apache.commons.httpclient.methods.GetMethod;  
  15. import org.apache.commons.httpclient.methods.PostMethod;  
  16. import org.apache.commons.httpclient.params.HttpMethodParams;  
  17.   
  18. /**  
  19.  * @ClassName: SimpleClient  
  20.  * @Description: TODO(这里用一句话描述这个类的作用)  
  21.  * @author zhoushun  
  22.  * @date 2014年2月13日 上午9:35:17  
  23.  *   
  24.  */  
  25. public class SimpleClient {  
  26.     public static void main(String[] args) throws IOException  
  27.     {  
  28.         HttpClient client = new HttpClient();     
  29.         //设置代理服务器地址和端口       
  30.      //client.getHostConfiguration().setProxy("proxy_host_addr",proxy_port);  
  31.         //使用GET方法,如果服务器需要通过HTTPS连接,那只需要将下面URL中的http换成https  
  32.        // HttpMethod method = new GetMethod("http://10.1.14.20:8088/workflowController/service/todo/addTask");   
  33.         //使用POST方法  
  34.         PostMethod method = new PostMethod("http://10.1.14.20:8088/workflowController/service/todo/addTask");   
  35.        
  36.           
  37.         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";  
  38.           
  39.      String ms = "{\"app\": \"standardWork\",\"type\": 0,"  
  40.             + "\"occurTime\": \"2013-11-14 11:22:02\",\"title\": \"-------流程标题-------\","  
  41.             + "\"loginName\": \"ST/G01008000311\",\"status\": 0,\"removed\": 0,"  
  42.             + " \"typename\": \"流程名称11\","  
  43.             + "\"url\": \""+URLEncoder.encode(s,"UTF-8")+"\","  
  44.             + "\"pname\": \"主流程名称\",\"pincident\": 1,"  
  45.             + "\"cname\": \"子流程实例号\",\"cincident\": 1,"  
  46.             + "\"stepName\": \"当前步骤\","  
  47.             + "\"initiator\": \"ST/G01008000311\"}";  
  48.          ((PostMethod) method).addParameter("data", ms);  
  49.            
  50.         HttpMethodParams param = method.getParams();  
  51.         param.setContentCharset("UTF-8");  
  52.        
  53.      client.executeMethod(method);  
  54.         //打印服务器返回的状态  
  55.      System.out.println(method.getStatusLine());  
  56.        //打印返回的信息  
  57.      System.out.println();  
  58.      InputStream stream = method.getResponseBodyAsStream();  
  59.        
  60.      BufferedReader br = new BufferedReader(new InputStreamReader(stream, "UTF-8"));  
  61.      StringBuffer buf = new StringBuffer();  
  62.      String line;  
  63.      while (null != (line = br.readLine())) {  
  64.          buf.append(line).append("\n");  
  65.      }  
  66.      System.out.println(buf.toString());  
  67.        //释放连接  
  68.      method.releaseConnection();  
  69.     }  
  70. }  


另附上 新浪微博 上的 调用demo中的一些 方法:

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. public HttpClient(int maxConPerHost, int conTimeOutMs, int soTimeOutMs,  
  2.         int maxSize) {  
  3.     connectionManager = new MultiThreadedHttpConnectionManager();  
  4.     HttpConnectionManagerParams params = connectionManager.getParams();  
  5.     params.setDefaultMaxConnectionsPerHost(maxConPerHost);  
  6.     params.setConnectionTimeout(conTimeOutMs);  
  7.     params.setSoTimeout(soTimeOutMs);  
  8.   
  9.     HttpClientParams clientParams = new HttpClientParams();  
  10.     // 忽略cookie 避免 Cookie rejected 警告  
  11.     clientParams.setCookiePolicy(CookiePolicy.IGNORE_COOKIES);  
  12.     client = new org.apache.commons.httpclient.HttpClient(clientParams,  
  13.             connectionManager);  
  14.     Protocol myhttps = new Protocol("https"new MySSLSocketFactory(), 443);  
  15.     Protocol.registerProtocol("https", myhttps);  
  16.     this.maxSize = maxSize;  
  17.     // 支持proxy  
  18.     if (proxyHost != null && !proxyHost.equals("")) {  
  19.         client.getHostConfiguration().setProxy(proxyHost, proxyPort);  
  20.         client.getParams().setAuthenticationPreemptive(true);  
  21.         if (proxyAuthUser != null && !proxyAuthUser.equals("")) {  
  22.             client.getState().setProxyCredentials(  
  23.                     AuthScope.ANY,  
  24.                     new UsernamePasswordCredentials(proxyAuthUser,  
  25.                             proxyAuthPassword));  
  26.             log("Proxy AuthUser: " + proxyAuthUser);  
  27.             log("Proxy AuthPassword: " + proxyAuthPassword);  
  28.         }  
  29.     }  
  30. }  
  31.   
  32. /** 
  33.  * log调试 
  34.  *  
  35.  */  
  36. private static void log(String message) {  
  37.     if (DEBUG) {  
  38.         log.debug(message);  
  39.     }  
  40. }  
  41.   
  42. /** 
  43.  * 处理http getmethod 请求 
  44.  *  
  45.  */  
  46.   
  47. public Response get(String url) throws WeiboException {  
  48.   
  49.     return get(url, new PostParameter[0]);  
  50.   
  51. }  
  52.   
  53. public Response get(String url, PostParameter[] params)  
  54.         throws WeiboException {  
  55.     log("Request:");  
  56.     log("GET:" + url);  
  57.     if (null != params && params.length > 0) {  
  58.         String encodedParams = HttpClient.encodeParameters(params);  
  59.         if (-1 == url.indexOf("?")) {  
  60.             url += "?" + encodedParams;  
  61.         } else {  
  62.             url += "&" + encodedParams;  
  63.         }  
  64.     }  
  65.     GetMethod getmethod = new GetMethod(url);  
  66.     return httpRequest(getmethod);  
  67.   
  68. }  
  69.   
  70. public Response get(String url, PostParameter[] params, Paging paging)  
  71.         throws WeiboException {  
  72.     if (null != paging) {  
  73.         List<PostParameter> pagingParams = new ArrayList<PostParameter>(4);  
  74.         if (-1 != paging.getMaxId()) {  
  75.             pagingParams.add(new PostParameter("max_id", String  
  76.                     .valueOf(paging.getMaxId())));  
  77.         }  
  78.         if (-1 != paging.getSinceId()) {  
  79.             pagingParams.add(new PostParameter("since_id", String  
  80.                     .valueOf(paging.getSinceId())));  
  81.         }  
  82.         if (-1 != paging.getPage()) {  
  83.             pagingParams.add(new PostParameter("page", String  
  84.                     .valueOf(paging.getPage())));  
  85.         }  
  86.         if (-1 != paging.getCount()) {  
  87.             if (-1 != url.indexOf("search")) {  
  88.                 // search api takes "rpp"  
  89.                 pagingParams.add(new PostParameter("rpp", String  
  90.                         .valueOf(paging.getCount())));  
  91.             } else {  
  92.                 pagingParams.add(new PostParameter("count", String  
  93.                         .valueOf(paging.getCount())));  
  94.             }  
  95.         }  
  96.         PostParameter[] newparams = null;  
  97.         PostParameter[] arrayPagingParams = pagingParams  
  98.                 .toArray(new PostParameter[pagingParams.size()]);  
  99.         if (null != params) {  
  100.             newparams = new PostParameter[params.length  
  101.                     + pagingParams.size()];  
  102.             System.arraycopy(params, 0, newparams, 0, params.length);  
  103.             System.arraycopy(arrayPagingParams, 0, newparams,  
  104.                     params.length, pagingParams.size());  
  105.         } else {  
  106.             if (0 != arrayPagingParams.length) {  
  107.                 String encodedParams = HttpClient  
  108.                         .encodeParameters(arrayPagingParams);  
  109.                 if (-1 != url.indexOf("?")) {  
  110.                     url += "&" + encodedParams;  
  111.                 } else {  
  112.                     url += "?" + encodedParams;  
  113.                 }  
  114.             }  
  115.         }  
  116.         return get(url, newparams);  
  117.     } else {  
  118.         return get(url, params);  
  119.     }  
  120. }  
  121.   
  122. /** 
  123.  * 处理http deletemethod请求 
  124.  */  
  125.   
  126. public Response delete(String url, PostParameter[] params)  
  127.         throws WeiboException {  
  128.     if (0 != params.length) {  
  129.         String encodedParams = HttpClient.encodeParameters(params);  
  130.         if (-1 == url.indexOf("?")) {  
  131.             url += "?" + encodedParams;  
  132.         } else {  
  133.             url += "&" + encodedParams;  
  134.         }  
  135.     }  
  136.     DeleteMethod deleteMethod = new DeleteMethod(url);  
  137.     return httpRequest(deleteMethod);  
  138.   
  139. }  
  140.   
  141. /** 
  142.  * 处理http post请求 
  143.  *  
  144.  */  
  145.   
  146. public Response post(String url, PostParameter[] params)  
  147.         throws WeiboException {  
  148.     return post(url, params, true);  
  149.   
  150. }  
  151.   
  152. public Response post(String url, PostParameter[] params,  
  153.         Boolean WithTokenHeader) throws WeiboException {  
  154.     log("Request:");  
  155.     log("POST" + url);  
  156.     PostMethod postMethod = new PostMethod(url);  
  157.     for (int i = 0; i < params.length; i++) {  
  158.         postMethod.addParameter(params[i].getName(), params[i].getValue());  
  159.     }  
  160.     HttpMethodParams param = postMethod.getParams();  
  161.     param.setContentCharset("UTF-8");  
  162.     if (WithTokenHeader) {  
  163.         return httpRequest(postMethod);  
  164.     } else {  
  165.         return httpRequest(postMethod, WithTokenHeader);  
  166.     }  
  167. }  
  168.   
  169. /** 
  170.  * 支持multipart方式上传图片 
  171.  *  
  172.  */  
  173. public Response multPartURL(String url, PostParameter[] params,  
  174.         ImageItem item) throws WeiboException {  
  175.     PostMethod postMethod = new PostMethod(url);  
  176.     try {  
  177.         Part[] parts = null;  
  178.         if (params == null) {  
  179.             parts = new Part[1];  
  180.         } else {  
  181.             parts = new Part[params.length + 1];  
  182.         }  
  183.         if (params != null) {  
  184.             int i = 0;  
  185.             for (PostParameter entry : params) {  
  186.                 parts[i++] = new StringPart(entry.getName(),  
  187.                         (String) entry.getValue());  
  188.             }  
  189.             parts[parts.length - 1] = new ByteArrayPart(item.getContent(),  
  190.                     item.getName(), item.getContentType());  
  191.         }  
  192.         postMethod.setRequestEntity(new MultipartRequestEntity(parts,  
  193.                 postMethod.getParams()));  
  194.         return httpRequest(postMethod);  
  195.   
  196.     } catch (Exception ex) {  
  197.         throw new WeiboException(ex.getMessage(), ex, -1);  
  198.     }  
  199. }  
  200.   
  201. public Response multPartURL(String fileParamName, String url,  
  202.         PostParameter[] params, File file, boolean authenticated)  
  203.         throws WeiboException {  
  204.     PostMethod postMethod = new PostMethod(url);  
  205.     try {  
  206.         Part[] parts = null;  
  207.         if (params == null) {  
  208.             parts = new Part[1];  
  209.         } else {  
  210.             parts = new Part[params.length + 1];  
  211.         }  
  212.         if (params != null) {  
  213.             int i = 0;  
  214.             for (PostParameter entry : params) {  
  215.                 parts[i++] = new StringPart(entry.getName(),  
  216.                         (String) entry.getValue());  
  217.             }  
  218.         }  
  219.         FilePart filePart = new FilePart(fileParamName, file.getName(),  
  220.                 file, new MimetypesFileTypeMap().getContentType(file),  
  221.                 "UTF-8");  
  222.         filePart.setTransferEncoding("binary");  
  223.         parts[parts.length - 1] = filePart;  
  224.   
  225.         postMethod.setRequestEntity(new MultipartRequestEntity(parts,  
  226.                 postMethod.getParams()));  
  227.         return httpRequest(postMethod);  
  228.     } catch (Exception ex) {  
  229.         throw new WeiboException(ex.getMessage(), ex, -1);  
  230.     }  
  231. }  
  232.   
  233. public Response httpRequest(HttpMethod method) throws WeiboException {  
  234.     return httpRequest(method, true);  
  235. }  
1 0
原创粉丝点击