http請求返回json物件。簡單的介面處理
阿新 • • 發佈:2019-02-18
開發了一個獨立查詢儲存的系統,需要被其他系統訪問,記錄一下方法 也許以後會用到。很簡單的http請求和返回
package com.hz.contral; import java.io.IOException; import java.io.PrintWriter; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang.StringUtils; import org.apache.logging.log4j.core.util.JsonUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.servlet.ModelAndView; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.hz.entity.Esentity; import com.hz.entity.SoGoEntity; import com.hz.entity.SoGoEntity; import com.hz.entity.TrackBean; import com.hz.service.ElasticsearchService; import com.hz.service.HbaseService; import com.hz.util.ConfigInfo; import com.hz.util.PageUtils; @Controller public class ElasticsearchContral { //將查詢值返回 @RequestMapping("/searchPageJson") public void searchPageJson(HttpServletRequest request,HttpServletResponse response, Model model) throws IOException { String searchName = request.getParameter("search"); String pageNum = request.getParameter("number"); //放入需要返回的值 Map<String, Object> returnMap=new HashMap<String, Object>(); //轉為json String jsonMap = JSON.toJSONString(returnMap,true); response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); out.print(jsonMap);//返回json數值 out.flush(); out.close(); } }
接下來是請求端的程式碼
package com.hz.util; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.ProtocolException; import java.net.URL; import java.net.URLEncoder; public class HttpTest { public static void main(String[] args) throws IOException { post( ); System.out.println("結束"); } private static void post() { // 將url 以 open方法返回的urlConnection 連線強轉為HttpURLConnection連線 (標識一個url所引用的遠端物件連線) HttpURLConnection connection = null; // 連線發起請求,處理伺服器響應 (從連接獲取到輸入流幷包裝為bufferedReader) BufferedReader bf = null; StringBuilder sb = null; try { URL url = new URL("http://192.168.3.157:8080/HZ.Hbase/searchPageJson.html"); connection = (HttpURLConnection) url.openConnection(); // 設定連線輸出流為true,預設false (post 請求是以流的方式隱式的傳遞引數) connection.setDoOutput(true); // 設定連線輸入流為true connection.setDoInput(true); // 設定請求方式為post connection.setRequestMethod("POST"); // post請求快取設為false connection.setUseCaches(false); // 設定該HttpURLConnection例項是否自動執行重定向 connection.setInstanceFollowRedirects(true); // 設定請求頭裡面的各個屬性 (以下為設定內容的型別,設定為經過urlEncoded編碼過的from引數) // application/x-javascript text/xml->xml資料 application/x-javascript->json物件 application/x-www-form-urlencoded->表單資料 // ;charset=utf-8 必須要,不然妙兜那邊會出現亂碼【★★★★★】 connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=utf-8"); // 建立連線 (請求未開始,直到connection.getInputStream()方法呼叫時才發起,以上各個引數設定需在此方法之前進行) connection.connect(); // 建立輸入輸出流,用於往連線裡面輸出攜帶的引數,(輸出內容為?後面的內容) DataOutputStream dataout = new DataOutputStream(connection.getOutputStream()); String app_key = "search="+ URLEncoder.encode("喜歡", "utf-8"); // 已修改【改為錯誤資料,以免資訊洩露】 String agt_num = "&number"+ URLEncoder.encode("1", "utf-8"); // 已修改【改為錯誤資料,以免資訊洩露】 // 格式 parm = aaa=111&bbb=222&ccc=333&ddd=444 String parm = app_key+ agt_num; // 將引數輸出到連線 dataout.writeBytes(parm); // 輸出完成後重新整理並關閉流 dataout.flush(); dataout.close(); // 重要且易忽略步驟 (關閉流,切記!) // System.out.println(connection.getResponseCode()); bf = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8")); String line; sb = new StringBuilder(); // 迴圈讀取流,若不到結尾處 while ((line = bf.readLine()) != null) { // sb.append(bf.readLine()); sb.append(line).append(System.getProperty("line.separator")); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (ProtocolException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally{ try { bf.close(); } catch (IOException e) { e.printStackTrace(); connection.disconnect(); // 銷燬連線 } System.out.println(sb.toString()); } } }
一個簡單的 http請求和返回就可以了。。。。僅供參考。自己留著備用。