1. 程式人生 > >okhttp傳送post請求攜帶json資料,並接收json資料

okhttp傳送post請求攜帶json資料,並接收json資料

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();
    }