okhttp傳送post請求攜帶json資料,並接收json資料
阿新 • • 發佈:2018-12-20
okhttp工具類:
package tools; import com.squareup.okhttp.*; import java.io.File; import java.io.IOException; import java.util.concurrent.TimeUnit; /** * @Auther: * @Date: 2018/12/14 11:47 * @Description: */ public class OkHttpUtil { private static final OkHttpClient client = new OkHttpClient(); public static final MediaType JSON = MediaType .parse("application/json; charset=utf-8"); private static final MediaType MEDIA_TYPE_PNG = MediaType .parse("image/png;charset=utf-8"); private static final MediaType MEDIA_TYPE_MARKDOWN = MediaType .parse("text/x-markdown; charset=utf-8"); static { client.setConnectTimeout(30, TimeUnit.SECONDS); } /** * 不會開啟非同步執行緒。 * * @param request * @return * @throws IOException */ public static Response execute(Request request) throws IOException { return client.newCall(request).execute(); } /** * 開啟非同步執行緒訪問網路 * * @param request * @param responseCallback */ public static void enqueue(Request request, Callback responseCallback) { client.newCall(request).enqueue(responseCallback); } /** * 根據url地址獲取資料 * * @param url * @return * @throws IOException */ public static String doGetHttpRequest(String url) throws IOException { Request request = new Request.Builder().url(url).build(); Response response = client.newCall(request).execute(); if (!response.isSuccessful()) { throw new IOException("Unexpected code " + response); } return response.body().string(); } /** * 根據url地址和json資料獲取資料 * * @param url * @param json * @return * @throws IOException */ public static String doPostHttpRequest(String url, String json) throws IOException { Request request = new Request.Builder().url(url) .post(RequestBody.create(JSON, json)).build(); Response response = client.newCall(request).execute(); if (!response.isSuccessful()) { throw new IOException("Unexpected code " + response); } return response.body().string(); } /** * 根據url地址和json資料獲取資料 * * @param url * @param json * @return * @throws IOException */ public static String doPostHttpRequest2(String url, String json) throws IOException { MediaType mediaType = MediaType.parse("application/json"); RequestBody body = RequestBody.create(mediaType, json); Request request = new Request.Builder().url(url).post(body) .addHeader("content-type", "application/json").build(); Response response = client.newCall(request).execute(); if (!response.isSuccessful()) { throw new IOException("Unexpected code " + response); } return response.body().string(); } public static String doPostImgHttpRequest(String url, File file) throws IOException { RequestBody requestBody = new MultipartBuilder() .type(MultipartBuilder.FORM) .addFormDataPart("buffer", file.getName(), RequestBody.create(MEDIA_TYPE_PNG, file)).build(); Request request = new Request.Builder().url(url).post(requestBody) .build(); Response response = client.newCall(request).execute(); if (!response.isSuccessful()) { throw new IOException("Unexpected code " + response); } return response.body().string(); } }
而後使用即可,controller層
/** * 新增訂單 */ @ApiOperation(value = "新增訂單", notes = "新增訂單介面") @RequestMapping(value = "addOrders", method = RequestMethod.POST) // @RequiresPermissions("hotel:add") public Message addOrder(@RequestBody RegistrationOrder registrationOrder) { String url = "http://47.92.69.68:8888/chh/order/lockRoom"; JSONObject map = new JSONObject(); map.put("pmsTypeId", registrationOrder.getRo_type_id()); map.put("hotelCode", registrationOrder.getHi_id()); map.put("roomNo",registrationOrder.getRo_id()); map.put("orderCode",registrationOrder.getOr_id()); map.put("occupationId",registrationOrder.getRo_occupation_id()); try { String str = OkHttpUtil.doPostHttpRequest(url, map.toString()); System.out.println(JSONObject.parse(str)); registrationOrderService.addOrder(registrationOrder); } catch (IOException e) { e.printStackTrace(); } return Message.success(); }