天天看點

java中調用api的方式(postJsonHTTP)

//設定格式以及字元編碼
 private static final MediaType JSON = MediaType.parse("application/json; charset=utf-8");
 
 /**
    * @Description: 擷取抓拍機清單
    * @param boxIP   調用伺服器的ip位址
    * @param port    調用伺服器的端口号
    * @param jsonStr  發送的資料
    * @param requestHead  請求頭
    * @return:
    * @Author: liujianhua
    * @Date: 18:47
    */
 //比如:http://192.168.88.133:8080/api/selectById
 //同:http://boxIP:port/requestHead
 public static  String postJsonHTTP(String boxIP,String port ,String jsonStr,String requestHead) throws IOException {
        String url = "http://"+boxIP+":"+port+"/"+requestHead;
        OkHttpClient okHttpClient = new OkHttpClient.Builder().readTimeout(30, TimeUnit.SECONDS).build();
        RequestBody requestBody = RequestBody.create(JSON, jsonStr);
        Request.Builder builder = new Request.Builder();
        final Request request = builder.url(url).post(requestBody).build();
        final Call call = okHttpClient.newCall(request);
        Response response;
        response = call.execute();
        return response.body().string();
    }
           

如何調用

public List<Map> requestCameraList() throws Exception{
        String boxIP = "192.168.88.133";
        String port = "8080";
        //将資料存放到map中
        Map requestMap = new HashMap();
        requestMap.put("Name","SubDevicesManageRequest");
        //下面将map轉為json  
        String ret = postJsonHTTP(boxIP, port, gson.toJson(requestMap),LOADBAIDUCAMERA);
        //将收到的資料轉為map格式
        HashMap retMap = gson.fromJson(ret, HashMap.class);
        System.err.println(retMap);
        return cameraListMap;
    }