:
La chaîne statique publique httppostwithjson (URL de chaîne) lève l'exception {httppost httppost = new httppost (url); CLOSEableHttpClient client = httpClients.CreateDefault (); String resContent = null; // JSON 方式 JSONObject JSONParam = new JSONObject (); jsonparam.put ("name", "admin"); jsonparam.put ("pass", "123456"); Entity StronEntity = new Stringentity (JSONParam.ToString (), "UTF-8"); // 解决中文乱码问题 Entity.SetContenCoDing ("UTF-8"); entity.setContentType ("application / json"); httppost.sentity (entité); System.out.println (); // 表单方式 // list <BasicNameValuePair> pairList = new ArrayList <BasicNameValuepair> (); // pairList.add (new BasicNameValuepair ("Name", "admin")); // pairList.add (new BasicNameValuepair ("Pass", "123456")); // httppost.sentity (new UrlencodedFormentity (pairlist, "utf-8")); HttpResponse resp = client.execute (httppost); if (resp.getStatusline (). getStaturScode () == 200) {httpentity he = resp.getEntity (); respactent = entityUtils.tostring (il, "UTF-8"); } return respact; } public static void main (String [] args) lève l'exception {string result = httppostwithjson ("http: // localhost: 8080 / hCtest2 / hc"); System.out.println (résultat); }post 方式 就要考虑提交的表单内容怎么传输了。本文 nom 和 passer 就是表单的值了。
封装表单属性可以用 JSON 也可以用传统的表单 , 如果是传统表单的话 要注意 , 也就是在上边代码注释那部分。用这种方式的话在 Servlet 里也就是数据处理层可以通过 request.getParameter ("String") 直接获取到属性值。就是相比 JSON 这种要简单一点 , 不过在实际开发中一般都是用 JSON 做数据传输的。用 JSON 的话有两种选择一个是阿里巴巴的 FASTJSON 还有一个就是谷歌的 GSON。fastjson 相比效率比较高 , GSON 适合解析有规律的 JSON 数据。博主这里用的是 FASTJSON 。还有用 JSON 的话在数据处理层要用流来读取表单属性 , 这就是相比传统表单多的一点内容。代码下边已经有了。
La classe publique HCServlet étend HttpServlet {private static final long SerialVersionUID = 1l; Protected void doGet (HttpServLetRequest Request, HttpServletResponse Response) lève ServletException, ioException {doPost (request, réponse); } Protected void doPost (HttpServLetRequest Request, HttpServletResponse Response) lève ServletException, ioException {request.SetcharAtterencoding ("UTF-8"); Response.SetContentType ("Text / HTML; charSet = UTF-8"); String acceptejson = ""; Utilisateur utilisateur = nouveau utilisateur (); BufferedReader br = new BufferedReader (new InputStreamReader ((servletinputStream) request.getInputStream (), "utf-8")); StringBuffer sb = new StringBuffer (""); Chaîne temporaire; while ((temp = br.readline ())! = null) {sb.append (temp); } br.close (); AcceptJson = sb.ToString (); if (AcceptJson! = "") {JSONObject Jo = JSONObject.ParseObject (AcceptJson); user.setUsername (jo.getString ("name")); user.setpassword (jo.getString ("pass")); } request.setAttribute ("utilisateur", utilisateur); request.getRequestDispatcher ("/ message.jsp"). Forward (demande, réponse); }}代码比较简陋 , 只是用于测试。希望能够有所收获。
以上就是小编为大家带来的 httpclient 模拟 post 请求 JSON 封装表单数据的实现方法全部内容了 , 希望大家多多支持武林网 ~