zoukankan      html  css  js  c++  java
  • 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("
    ");
         }
         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;
            // 支持proxy
            if (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);
        }
  • 相关阅读:
    常用的DOCS命令
    [51NOD1126]求递推序列的第n项(矩阵快速幂)
    [HDOJ2830]Matrix Swapping II(胡搞)
    [每天一道A+B]签到检测程序
    [HIHO1260]String Problem I(trie树)
    [HIHO1300]展胜地的鲤鱼旗(栈,dp)
    [HIHO1299]打折机票(线段树)
    [51NOD1087]1 10 100 1000(规律,二分)
    [POJ2002]Squares(计算几何,二分)
    [HDOJ1015]Safecracker(DFS, 组合数学)
  • 原文地址:https://www.cnblogs.com/zhujiabin/p/4741878.html
Copyright © 2011-2022 走看看