httpClient使用post

1.以form表单的样式发送数据

/**
 * httpClient 发送表单提交的方式
*/
public static String sendPost(String url, String param)
{
    PrintWriter out = null;
    BufferedReader in = null;
    StringBuilder result = new StringBuilder();
    try
    {
        log.info("sendPost - {}", url+"/r/n"+param);
        URL realUrl = new URL(url);
        URLConnection conn = realUrl.openConnection();
        conn.setRequestProperty("accept", "*/*");
        conn.setRequestProperty("connection", "Keep-Alive");
        conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
        conn.setRequestProperty("Accept-Charset", "utf-8");
        conn.setRequestProperty("contentType", "utf-8");
        //通过form进行提交
        conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
        conn.setDoOutput(true);
        conn.setDoInput(true);
        out = new PrintWriter(conn.getOutputStream());
        out.print(param);
        out.flush();
        in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8"));
        String line;
        while ((line = in.readLine()) != null)
        {
            result.append(line);
        }
        log.info("recv - {}", result);
    }
    catch (ConnectException e)
    {
        log.error("调用HttpUtils.sendPost ConnectException, url=" + url + ",param=" + param, e);
    }
    catch (SocketTimeoutException e)
    {
        log.error("调用HttpUtils.sendPost SocketTimeoutException, url=" + url + ",param=" + param, e);
    }
    catch (IOException e)
    {
        log.error("调用HttpUtils.sendPost IOException, url=" + url + ",param=" + param, e);
    }
    catch (Exception e)
    {
        log.error("调用HttpsUtil.sendPost Exception, url=" + url + ",param=" + param, e);
    }
    finally
    {
        try
        {
            if (out != null)
            {
                out.close();
            }
            if (in != null)
            {
                in.close();
            }
        }
        catch (IOException ex)
        {
            log.error("调用in.close Exception, url=" + url + ",param=" + param, ex);
        }
    }
    return result.toString();
}

2.接收form表单格式的参数

/** 
* httpClient 发送表单接收的方式
*/
@ResponseBody
    @RequestMapping(value = {"/appCall"}, method = {RequestMethod.POST}, produces = {"text/html;charset=UTF-8"})
    public String appCall(HttpServletRequest request, HttpServletResponse response) {
        String responseStr = "";
        StringBuffer logStr = new StringBuffer();
        String jsonParam = request.getParameter("jsonParam");
        try {
            JSONObject obj = JSONObject.fromObject(jsonParam);
        } catch (Exception e) {
            System.out.println(e);
        }
        return jsonParam;
    }

3.以内容体的方式发送数据

/**
 * httpClient 发送内容体提交的方式
 */

public static String sendPostBody(String url, String param)
    {
        PrintWriter out = null;
        BufferedReader in = null;
        StringBuilder result = new StringBuilder();
        try
        {
            log.info("sendPost - {}", url+"/r/n"+param);
            URL realUrl = new URL(url);
            URLConnection conn = realUrl.openConnection();
            conn.setRequestProperty("accept", "*/*");
            conn.setRequestProperty("connection", "Keep-Alive");
            conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
            conn.setRequestProperty("Accept-Charset", "utf-8");
            conn.setRequestProperty("contentType", "utf-8");
            conn.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
            conn.setDoOutput(true);
            conn.setDoInput(true);
            out = new PrintWriter(conn.getOutputStream());
            out.print(param);
            out.flush();
            in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8"));
            String line;
            while ((line = in.readLine()) != null)
            {
                result.append(line);
            }
            log.info("recv - {}", result);
        }
        catch (ConnectException e)
        {
            log.error("调用HttpUtils.sendPost ConnectException, url=" + url + ",param=" + param, e);
        }
        catch (SocketTimeoutException e)
        {
            log.error("调用HttpUtils.sendPost SocketTimeoutException, url=" + url + ",param=" + param, e);
        }
        catch (IOException e)
        {
            log.error("调用HttpUtils.sendPost IOException, url=" + url + ",param=" + param, e);
        }
        catch (Exception e)
        {
            log.error("调用HttpsUtil.sendPost Exception, url=" + url + ",param=" + param, e);
        }
        finally
        {
            try
            {
                if (out != null)
                {
                    out.close();
                }
                if (in != null)
                {
                    in.close();
                }
            }
            catch (IOException ex)
            {
                log.error("调用in.close Exception, url=" + url + ",param=" + param, ex);
            }
        }
        return result.toString();
    }

4.接收内容体的数据

 /**
     * 内容体接收
     */
    @ResponseBody
    @RequestMapping(value = {"/encryptAppCall"}, method = {RequestMethod.POST})
    public AppResult getAppCall(HttpServletRequest request, HttpServletResponse response) {
        AppResult appResult = new AppResult();
        try {
            String str = Utils.toBuffer(request);
            JSONObject obj = JSONObject.fromObject(str);
            return appResult;
        } catch (Exception e) {
            appResult.setReturn_code(1);
            appResult.setMessage("" + e);
            return appResult;
        }
    }
    /**
     * 从请求内容体中获取数据
     * @param request
     * @return
     */
    public static  String toBuffer(HttpServletRequest request) {
        StringBuilder buffer = new StringBuilder();
        BufferedReader reader = null;
        try {
            request.setCharacterEncoding("UTF-8");
            reader = new BufferedReader(new InputStreamReader(
                    request.getInputStream(), "UTF-8"));
            String line = null;
            while ((line = reader.readLine()) != null) {
                buffer.append(line);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (null != reader) {
                try {
                    reader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return buffer.toString();
    }

 

转载于:https://www.cnblogs.com/zongguitao/p/11143013.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值