The request method when the Okhttp request parameter is an array type

Method 1: Transform the request parameters of the array type into String type

For example:

byte[] responseRes = OkhttpUtil.postForByteArray(url, desJsonData);
System.out.println("responseRes: " + responseRes);

String bytesStr = "";
for(int i=0; i<responseRes.length; i++) {
    
    
	if(i == responseRes.length-1){
    
    
    	bytesStr = bytesStr + (byte) responseRes[i];
    }else {
    
    
       bytesStr = bytesStr + (byte) responseRes[i] + ",";
   }
}

JSONObject jsonObject = new JSONObject();
jsonObject.put("rpid", id);
jsonObject.put("rpversion", version);
jsonObject.put("bytes", bytesStr);

ApiResult responseRes2 = OkhttpUtil.postForPBDeSerializeForm(responseDeserializeUrlIP, jsonObject);

The third parameter bytes of the request interface is actually byte[] type, but we can pass it in the modified String type

public static ApiResult postForPBDeSerializeForm(String url, JSONObject requestParam){
    
    
    System.out.println("postForPBDeSerializeForm接口");
    ApiResult apiResult = new ApiResult();
    try {
    
    
        OkHttpClient client = new OkHttpClient();
        FormBody.Builder formBodyBuilder = new FormBody.Builder();
        formBodyBuilder.add("rpid", requestParam.getString("rpid"));
        formBodyBuilder.add("rpversion", requestParam.getString("rpversion"));
        formBodyBuilder.add("bytes", requestParam.getString("bytes"));

        Request request = new Request.Builder()
                .post(formBodyBuilder.build())
                .url(url)
                .build();
        Response response = client.newCall(request).execute();
        System.out.println("response.code():" + response.code() + "         " + (response.code() == 200));
        apiResult.setCode(response.code());
        apiResult.setResult(response.body().string());
     }catch (Exception e){
    
    
         System.out.println("'sdew");
         e.printStackTrace();
         apiResult.setCode(400);
         apiResult.setResult("请求异常");
     }
     return apiResult;
}

Method 2: Use the add method of FormBody.Builder

public static void test(String url, byte[] bytes){
    
    
    try {
    
    
        OkHttpClient client = new OkHttpClient();

        FormBody.Builder formBodyBuilder = new FormBody.Builder();
        formBodyBuilder.add("rpid", "1000019");
        formBodyBuilder.add("rpversion", "5.0");

        for(byte temp : bytes){
    
    
            formBodyBuilder.add("bytes", temp + "");
        }

        Request request = new Request.Builder()
            .post(formBodyBuilder.build())
            .url(url)
            .build();
       Response response = client.newCall(request).execute();
       System.out.println("response.code():" + response.code() + "         " + (response.code() == 200));
       System.out.println("响应反序列化结果:" + response.body().string());
       }catch (Exception e){
    
    
          System.out.println("'sdew");
          e.printStackTrace();
    }
}

Guess you like

Origin blog.csdn.net/sinat_34241861/article/details/114392135