`
bit1129
  • 浏览: 1073075 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【httpclient】httpclient发送表单POST请求

 
阅读更多

浏览器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);
        }
    }

 

 

 

分享到:
评论

相关推荐

    java HttpClient 发送GET请求和带有表单参数的POST请求教程例子

    - 在发送请求之前,确保网络连接正常。 - 使用`try-catch-finally`结构来捕获可能的异常,并确保在`finally`块中释放资源,避免内存泄漏。 - 在处理响应时,注意编码问题,例如上述代码中的“UTF-8”。 - 如果在生产...

    httpclient post方式发送请求

    接下来,我们将探讨如何使用HTTPClient发送POST请求并附带JSON数据。首先,你需要创建一个`CloseableHttpClient`实例,然后使用`HttpPost`对象来指定请求URL。在POST请求中,我们将使用`EntityBuilder`来构建包含...

    httpclient发送get请求和post请求demo

    接着,调用`execute`方法发送请求并获取响应。如果响应包含实体,我们可以使用`EntityUtils`来处理响应内容。 接下来,我们转向POST请求,POST请求常用于向服务器提交数据。HttpClient中,我们使用`HttpPost`类来...

    HttpClientUtil工具类发送get和post请求,支持http和https,支持发送文件

    在设置完请求参数后,同样通过HttpClient的execute方法发送请求。 3. 支持http和https:HttpClientUtil需要能够处理HTTP和HTTPS协议。HTTP协议不涉及数据加密,而HTTPS协议在HTTP的基础上加入了SSL/TLS层,提供数据...

    HttpClient发送http请求(post和get)需要的jar包+内符java代码案例+注解详解

    - `httpmime.jar`:用于处理多媒体内容和表单数据,特别适用于POST请求。 - `commons-logging.jar`:日志服务抽象层,用于HttpClient的日志输出。 这些库可以通过Maven或Gradle等构建工具轻松管理,或者手动下载...

    HttpClient发送http请求(post+get)需要的jar包+内符java代码案例+注解详解

    以下是一个使用HttpClient发送POST请求的Java代码示例: ```java import org.apache.http.HttpEntity; import org.apache.http.NameValuePair; import org.apache.http.client.entity.UrlEncodedFormEntity; import...

    HttpClient模拟get,post请求并发送请求参数(json等)

    它允许开发者模拟GET和POST等HTTP请求,并可以方便地发送JSON等数据作为请求参数。在本文中,我们将深入探讨如何使用HttpClient进行HTTP请求操作,以及如何处理JSON数据。 首先,我们需要引入HttpClient的相关依赖...

    httpclient模拟post请求json封装表单数据的实现方法

    在这个场景中,我们关注的是如何使用 HTTPClient 发送一个 JSON 格式的 POST 请求并封装表单数据。下面将详细介绍这个过程。 首先,我们需要创建一个 `HttpPost` 对象,并指定目标 URL。在给出的代码中,`url` 参数...

    HttpClient(用CloseableHttpClient发送get/post请求)

    HttpClient(用CloseableHttpClient发送get/post请求)

    HttpClient实现POST GET和文件下载

    2. **执行请求**:同POST请求,通过HttpClient的`execute()`方法发送请求。 3. **处理响应**:同样获取`HttpResponse`,解析响应码和响应内容。 ### 文件下载 HttpClient提供了一种便捷的方式来下载文件: 1. **...

    HttpClient发送post请求传输json数据

    首先,理解POST请求:与GET请求不同,POST请求通常用于向服务器发送数据,例如提交表单或上传文件。在我们的场景中,我们发送的是JSON(JavaScript Object Notation)数据,这是一种轻量级的数据交换格式,易于人...

    httpclient发送post请求.docx

    3. 发送请求和处理响应: 发送POST请求使用httpClient的execute()方法,并捕获返回的CloseableHttpResponse对象。在成功接收响应后,我们需要检查状态码并处理响应实体: ```java try (CloseableHttpResponse ...

    http请求工具类HttpClientUtil,get,post请求(csdn)————程序.pdf

    HttpClientUtil 是一个用于发送 HTTP 请求的工具类,主要支持 GET 和 POST 方法。它使用了 Apache HttpClient 库,这是一个强大的 Java 客户端编程工具包,用于处理 HTTP 协议。以下是对类中关键方法和概念的详细...

    使用http发送form表单请求参数.doc

    在 Java 中,我们可以使用 HTTPClient 库来发送 Form 表单请求参数。 使用 HTTPClient 库发送 Form 表单请求参数 在上面的代码中,我们使用了 Apache 的 HTTPClient 库来发送 Form 表单请求参数。首先,我们创建了...

    HttpClient发送json、普通参数类型的Post请求(csdn)————程序.pdf

    本文主要讨论如何使用HttpClient发送JSON格式和普通参数类型的POST请求。首先,我们来看一下所需的Maven依赖。 ```xml &lt;groupId&gt;commons-httpclient &lt;artifactId&gt;commons-httpclient &lt;version&gt;3.1 &lt;groupId&gt;...

    java使用HttpClient发送http请求

    在Java编程中,HttpClient是一个非常重要的工具库,用于发送HTTP请求和处理响应。这个工具广泛应用于各种场景,如数据抓取、API交互等。本文将深入讲解如何使用HttpClient来发送HTTP请求,以及相关的源码分析。 ...

    C#的http发送post和get请求源码

    在C#编程中,HTTP(超文本传输协议)是用于客户端和服务器之间通信的主要协议,主要涉及GET和POST...这个程序可能包含一个窗口,用户输入请求参数,点击按钮后,程序使用`HttpClient`发送请求,并将结果展示在界面上。

    HttpClient请求之基础

    4. **执行请求**:通过HttpClient对象的`execute`方法发送请求,获取HttpResponse。 5. **处理响应**:从HttpResponse中读取响应状态码、头部和实体内容。例如,使用`getStatusLine()`获取状态码,`getAllHeaders()`...

Global site tag (gtag.js) - Google Analytics