当前位置:首页 > 开发 > 开源软件 > 正文

【httpclient】httpclient发送表单POST请求

发表于: 2014-08-29   作者:bit1129   来源:转载   浏览:
摘要: 浏览器Form Post请求 浏览器可以通过提交表单的方式向服务器发起POST请求,这种形式的POST请求不同于一般的POST请求 1. 一般的POST请求,将请求数据放置于请求体中,服务器端以二进制流的方式读取数据,HttpServletRequest.getInputStream()。这种方式的请求可以处理任意数据形式的POST请求,比如请求数据是字符串或者是二进制数据 2. Form

浏览器Form Post请求

浏览器可以通过提交表单的方式向服务器发起POST请求,这种形式的POST请求不同于一般的POST请求

1. 一般的POST请求,将请求数据放置于请求体中,服务器端以二进制流的方式读取数据,HttpServletRequest.getInputStream()。这种方式的请求可以处理任意数据形式的POST请求,比如请求数据是字符串或者是二进制数据

2. Form POST请求,只能提交字符串而且是键zhi也是请求的数据放于POST请求体中,服务器端可以通过request.getParameter的方法获得请求参数的值,取值的方式跟GET通过url取出请求参数一样。

3.浏览器在提交表单的POST请求,自动添加如下Content-Type这个Header:Content-Type:application/x-www-form-urlencoded

 

HttpClient 4.0

httpclient 4.0 直接支持通过POST方式提交请求参数,如下是代码片段:

 

private static HttpPost performFormPost(String url, Map<String, String> params) throws IOException {  
          
        HttpPost httpost = new HttpPost(url);  
        List<NameValuePair> nvps = new ArrayList <NameValuePair>();  
          
        Set<String> keySet = params.keySet();  
        for(String key : keySet) {  
            nvps.add(new BasicNameValuePair(key, params.get(key)));  
        }      
        httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));  
     }  
        return httpost;  
    }

 

httpclient 3.1

 

 

 public String formPost(String url, Map<String, String> params) throws IOException {
        if (url == null || url.trim().length() <= 0) {
            throw new IllegalArgumentException("POST url can not be empty");
        }
        Map<String, String> response = new HashMap<String, String>();
        PostMethod poster = new PostMethod(url);
        String content = "";
        String encoding = HTTP.UTF_8;
        String contentType = "application/x-www-form-urlencoded;charset=" + encoding;

        if (params != null && params.size() > 0) {
            content = format(params, encoding);
        }
        StringRequestEntity entity = new StringRequestEntity(content, contentType, encoding);
        poster.setRequestEntity(entity);
        httpClient.executeMethod(poster);
        return responseBodyAsString(poster);
    }

    private static String format(Map<String, String> parameters, final String encoding) {
        final StringBuilder sb = new StringBuilder();
        Set<Map.Entry<String, String>> entrySet = parameters.entrySet();
        Iterator<Map.Entry<String, String>> iterator = entrySet.iterator();
        while (iterator.hasNext()) {
            Map.Entry<String, String> entry = iterator.next();
            final String encodedName = encode(entry.getKey(), encoding);
            final String value = entry.getValue();
            final String encodedValue = value != null ? encode(value, encoding) : "";
            if (sb.length() > 0) {
                sb.append("&");
            }
            sb.append(encodedName);
            sb.append("=");
            sb.append(encodedValue);
        }
        return sb.toString();
    }

    public static String decode(final String content, final String encoding) {
        try {
            return URLDecoder.decode(content, encoding != null ? encoding : HTTP.DEFAULT_CONTENT_CHARSET);
        } catch (UnsupportedEncodingException problem) {
            throw new IllegalArgumentException(problem);
        }
    }

    public static String encode(final String content, final String encoding) {
        try {
            return URLEncoder.encode(content,  encoding != null ? encoding : HTTP.DEFAULT_CONTENT_CHARSET);
        } catch (UnsupportedEncodingException problem) {
            throw new IllegalArgumentException(problem);
        }
    }

 

 

 

【httpclient】httpclient发送表单POST请求

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
需要的jar包 代码 /** * post请求方法 传递地址 、数据 * @param url * @param datas * @return */
效果如下图所示: Android发送GET和POST以及HttpClient发送POST请求给服务器响应" width="371" heig
效果如下图所示: Android发送GET和POST以及HttpClient发送POST请求给服务器响应" src="http://img.
效果如下图所示: Android发送GET和POST以及HttpClient发送POST请求给服务器响应_第1张图片" src="h
由于毕业设计要涉及到互联网的的通讯,所以很快就接触到于远程服务器交互。起初想是和服务器的数据
​【声明】 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章
某个网站要通过post请求来返回数值。 使用httpclient发送post请求的过程如下: public static void m
一、HttpClient介绍 HttpClient是用来模拟HTTP请求的,其实实质就是把HTTP请求模拟后发给Web服务器
一、HttpClient介绍 HttpClient是用来模拟HTTP请求的,其实实质就是把HTTP请求模拟后发给Web服务器
HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HT
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号