源: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 发送一个 JSON 格式的 POST 请求并封装表单数据。下面将详细介绍这个过程。 首先,我们需要创建一个 `HttpPost` 对象,并指定目标 URL。在给出的代码中,`url` 参数...
HttpClient还支持其他高级功能,如重试策略、Cookie管理、多部分表单数据上传等。在实际项目中,我们通常会封装一个HttpClientUtil工具类,以简化请求的创建和执行过程。 例如,一个简单的HttpClientUtil工具类可能...
POST请求通常用于向服务器提交数据,如表单数据或者JSON对象。使用HttpClient发送POST请求的基本步骤如下: 1. **创建HttpClient对象**:首先,我们需要实例化一个`CloseableHttpClient`对象,这是HttpClient的核心...
POST请求则可以携带更多数据,常用于提交表单或上传文件。这两种方法的安全性和可缓存性也有所不同,GET请求的参数显示在URL上,易于被记录,而POST请求的数据则包含在请求体中,相对更安全。 在C#中,我们可以使用...
如果需要发送的是普通的表单数据(非JSON),则应使用`UrlEncodedFormEntity`。同样,我们可以从`JSONObject`中获取键值对: ```java List<NameValuePair> parameters = new ArrayList(); for (String key : json....
这适用于发送 URL 编码的表单数据。 - 如果需要发送 JSON 数据,可以使用 `StringEntity`,设置合适的 Content-Type,如 `ContentType.APPLICATION_JSON`,然后将其设置为请求实体。 5. **处理响应**: 在执行...
GET请求用于获取服务器上的资源,而POST请求则常用于向服务器提交数据,比如表单数据或上传文件。 1. GET请求:HttpClientUtil中的GET方法通常会创建一个HttpGet对象,设置请求的URL,并通过HttpClient的execute...
前者用于处理表单数据,后者用于发送JSON或其他文本数据。 - 对于GET请求,请求参数通常添加到URL的查询字符串中。 - `NameValuePair`用于创建键值对,可以用于构建请求参数列表。 5. **响应处理**: - `...
3. **请求参数处理**:对于POST请求,需要处理表单数据、JSON数据或文件上传;对于GET请求,可能需要添加查询参数。 4. **请求头管理**:设置Content-Type、Authorization等请求头。 5. **响应处理**:获取HTTP响应...
这里的UrlEncodedFormEntity用于封装表单数据,然后设置到HttpPost的实体中。 关于源码分析,HttpClient的设计基于一系列接口和抽象类,使其具有高度可扩展性。例如,`CloseableHttpClient`是客户端的顶级接口,`...
POST请求通常用于提交表单数据,而不仅仅是获取静态网页内容。在本文中,我们将深入探讨如何使用C#实现这个功能,以及相关的重要知识点。 首先,要模拟POST请求,我们需要理解HTTP协议的基本原理。POST请求包括一个...
在C#编程中,POST提交数据是常见的网络通信方式,特别是在Web应用开发中,比如向服务器发送表单数据、API接口交互等。本教程将详细讲解如何在C#中实现POST请求并接收返回的数据。 首先,理解POST请求的基本概念:...
2. POST:POST请求则用于向服务器发送数据,通常用于提交表单或者上传文件。POST请求的数据包含在请求体中,对数据量无明显限制,且数据对用户不可见。 在C#中,我们可以使用`System.Net.Http`命名空间中的...
在XML、form(表单数据)和JSON提交方面,HttpClient提供了一种灵活的方式将这些数据类型发送到服务器。 首先,我们来看`HttpClientUtil.java`,这是一个常见的工具类,通常包含一系列静态方法,用于简化HttpClient...
可以是JSON格式、表单数据或其他自定义格式。 3. **选择HTTP客户端库**:Java中常用的HTTP客户端库有Apache HttpClient、OkHttp等。这里我们使用Apache HttpClient,它功能强大,易于使用。 4. **发送请求**:使用...
在Android开发中,POST请求是常见的网络数据交互方式,它用于向服务器发送数据,比如登录信息、表单数据等。本篇文章将详细讲解如何在Android应用中实现POST请求,获取JSON内容并进行解析。 首先,我们需要引入网络...
最简单的POST请求可以通过设置IDHTTP的Request.Method为'POST',然后传递数据到Post方法。例如: ```delphi var HTTP: TIdHTTP; PostData: TStringList; begin HTTP := TIdHTTP.Create(nil); PostData := ...