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

httpclient模拟post请求json封装表单数据

    博客分类:
  • HTTP
 
阅读更多
源:http://www.cnblogs.com/Vdiao/p/5339487.html
评:
好长时间不更博了,主要肚子里没什么好墨水,哈哈。废话不说上代码。

复制代码
1     public static String httpPostWithJSON(String url) throws Exception {
2
3         HttpPost httpPost = new HttpPost(url);
4         CloseableHttpClient client = HttpClients.createDefault();
5         String respContent = null;
6        
7 //        json方式
8         JSONObject jsonParam = new JSONObject(); 
9         jsonParam.put("name", "admin");
10         jsonParam.put("pass", "123456");
11         StringEntity entity = new StringEntity(jsonParam.toString(),"utf-8");//解决中文乱码问题   
12         entity.setContentEncoding("UTF-8");   
13         entity.setContentType("application/json");   
14         httpPost.setEntity(entity);
15         System.out.println();
16        
17    
18 //        表单方式
19 //        List<BasicNameValuePair> pairList = new ArrayList<BasicNameValuePair>();
20 //        pairList.add(new BasicNameValuePair("name", "admin"));
21 //        pairList.add(new BasicNameValuePair("pass", "123456"));
22 //        httpPost.setEntity(new UrlEncodedFormEntity(pairList, "utf-8"));  
23        
24        
25         HttpResponse resp = client.execute(httpPost);
26         if(resp.getStatusLine().getStatusCode() == 200) {
27             HttpEntity he = resp.getEntity();
28             respContent = EntityUtils.toString(he,"UTF-8");
29         }
30         return respContent;
31     }
32
33    
34     public static void main(String[] args) throws Exception {
35         String result = httpPostWithJSON("http://localhost:8080/hcTest2/Hc");
36         System.out.println(result);
37     }
复制代码
post方式 就要考虑提交的表单内容怎么传输了。本文name和pass就是表单的值了。

封装表单属性可以用json也可以用传统的表单,如果是传统表单的话 要注意,也就是在上边代码注释那部分。用这种方式的话在servlet里也就是数据处理层可以通过request.getParameter(”string“)直接获取到属性值。就是相比json这种要简单一点,不过在实际开发中一般都是用json做数据传输的。用json的话有两种选择一个是阿里巴巴的fastjson还有一个就是谷歌的gson。fastjson相比效率比较高,gson适合解析有规律的json数据。博主这里用的是fastjson。还有用json的话在数据处理层要用流来读取表单属性,这就是相比传统表单多的一点内容。代码下边已经有了。



复制代码
1 public class HcServlet extends HttpServlet {
2     private static final long serialVersionUID = 1L;
3       
4     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
5         doPost(request, response);
6     }
7
8    
9     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
10        
11         request.setCharacterEncoding("UTF-8"); 
12         response.setContentType("text/html;charset=UTF-8"); 
13         String acceptjson = ""; 
14         User user = new User();
15         BufferedReader br = new BufferedReader(new InputStreamReader( 
16                 (ServletInputStream) request.getInputStream(), "utf-8")); 
17         StringBuffer sb = new StringBuffer(""); 
18         String temp; 
19         while ((temp = br.readLine()) != null) { 
20             sb.append(temp); 
21         } 
22         br.close(); 
23         acceptjson = sb.toString(); 
24         if (acceptjson != "") { 
25             JSONObject jo = JSONObject.parseObject(acceptjson);
26             user.setUsername(jo.getString("name"));
27             user.setPassword(jo.getString("pass"));
28         } 
29        
30         request.setAttribute("user", user);
31         request.getRequestDispatcher("/message.jsp").forward(request, response);
32     }
33 }
复制代码
代码比较简陋,只是用于测试。希望能够有所收获。
分享到:
评论

相关推荐

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

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

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

    HttpClient还支持其他高级功能,如重试策略、Cookie管理、多部分表单数据上传等。在实际项目中,我们通常会封装一个HttpClientUtil工具类,以简化请求的创建和执行过程。 例如,一个简单的HttpClientUtil工具类可能...

    HttpClient实现POST GET和文件下载

    POST请求通常用于向服务器提交数据,如表单数据或者JSON对象。使用HttpClient发送POST请求的基本步骤如下: 1. **创建HttpClient对象**:首先,我们需要实例化一个`CloseableHttpClient`对象,这是HttpClient的核心...

    C# http Get/POST请求封装类

    POST请求则可以携带更多数据,常用于提交表单或上传文件。这两种方法的安全性和可缓存性也有所不同,GET请求的参数显示在URL上,易于被记录,而POST请求的数据则包含在请求体中,相对更安全。 在C#中,我们可以使用...

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

    如果需要发送的是普通的表单数据(非JSON),则应使用`UrlEncodedFormEntity`。同样,我们可以从`JSONObject`中获取键值对: ```java List&lt;NameValuePair&gt; parameters = new ArrayList(); for (String key : json....

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

    这适用于发送 URL 编码的表单数据。 - 如果需要发送 JSON 数据,可以使用 `StringEntity`,设置合适的 Content-Type,如 `ContentType.APPLICATION_JSON`,然后将其设置为请求实体。 5. **处理响应**: 在执行...

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

    GET请求用于获取服务器上的资源,而POST请求则常用于向服务器提交数据,比如表单数据或上传文件。 1. GET请求:HttpClientUtil中的GET方法通常会创建一个HttpGet对象,设置请求的URL,并通过HttpClient的execute...

    HttpClient工具类封装.docx

    前者用于处理表单数据,后者用于发送JSON或其他文本数据。 - 对于GET请求,请求参数通常添加到URL的查询字符串中。 - `NameValuePair`用于创建键值对,可以用于构建请求参数列表。 5. **响应处理**: - `...

    php中http请求封装HttpClient精华中的经典代码

    3. **请求参数处理**:对于POST请求,需要处理表单数据、JSON数据或文件上传;对于GET请求,可能需要添加查询参数。 4. **请求头管理**:设置Content-Type、Authorization等请求头。 5. **响应处理**:获取HTTP响应...

    java使用HttpClient发送http请求

    这里的UrlEncodedFormEntity用于封装表单数据,然后设置到HttpPost的实体中。 关于源码分析,HttpClient的设计基于一系列接口和抽象类,使其具有高度可扩展性。例如,`CloseableHttpClient`是客户端的顶级接口,`...

    C# 模拟Post抓取数据

    POST请求通常用于提交表单数据,而不仅仅是获取静态网页内容。在本文中,我们将深入探讨如何使用C#实现这个功能,以及相关的重要知识点。 首先,要模拟POST请求,我们需要理解HTTP协议的基本原理。POST请求包括一个...

    c# post提交接收数据

    在C#编程中,POST提交数据是常见的网络通信方式,特别是在Web应用开发中,比如向服务器发送表单数据、API接口交互等。本教程将详细讲解如何在C#中实现POST请求并接收返回的数据。 首先,理解POST请求的基本概念:...

    c# http协议,实现get或post发送请求 并返回内容

    2. POST:POST请求则用于向服务器发送数据,通常用于提交表单或者上传文件。POST请求的数据包含在请求体中,对数据量无明显限制,且数据对用户不可见。 在C#中,我们可以使用`System.Net.Http`命名空间中的...

    httpClient的xml,form,json提交

    在XML、form(表单数据)和JSON提交方面,HttpClient提供了一种灵活的方式将这些数据类型发送到服务器。 首先,我们来看`HttpClientUtil.java`,这是一个常见的工具类,通常包含一系列静态方法,用于简化HttpClient...

    Http请求接口方法封装及Demo

    可以是JSON格式、表单数据或其他自定义格式。 3. **选择HTTP客户端库**:Java中常用的HTTP客户端库有Apache HttpClient、OkHttp等。这里我们使用Apache HttpClient,它功能强大,易于使用。 4. **发送请求**:使用...

    android的post请求

    在Android开发中,POST请求是常见的网络数据交互方式,它用于向服务器发送数据,比如登录信息、表单数据等。本篇文章将详细讲解如何在Android应用中实现POST请求,获取JSON内容并进行解析。 首先,我们需要引入网络...

    delphi 7 idhttp post 的8种使用方法(含源码)

    最简单的POST请求可以通过设置IDHTTP的Request.Method为'POST',然后传递数据到Post方法。例如: ```delphi var HTTP: TIdHTTP; PostData: TStringList; begin HTTP := TIdHTTP.Create(nil); PostData := ...

Global site tag (gtag.js) - Google Analytics