问题

  • 调用okhttp_post_json的封装类发送无参数请求之后,出现空指针异常导致项目无法运行;

image

image

  • 原封装类
public class OK {
    public static void PJ(String url,String json,okhttp3.Callback callback){
            OkHttpClient okHttpClient=new OkHttpClient();
                RequestBody requestBody=RequestBody
                        .create(MediaType.parse("application/json"),json);
                Request request=new Request.Builder()
                        .url(url)
                        .post(requestBody)
                        .build();
                okHttpClient.newCall(request).enqueue(callback);
    }
}
  • 原调用类
public void fuwu(){
        OK.PJ("http://150.158.117.228:9090/c1/query_car_park", null, new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                Log.d("e",e.toString());
            }
            @Override
            public void onResponse(Call call, Response response) throws IOException {
                String res=response.body().string();
                Log.d("res",res);
            }
        });
    }

解决

  • 新封装类
public class OK {
    public static void PJ(String url,String json,okhttp3.Callback callback){
            OkHttpClient okHttpClient=new OkHttpClient();
            try {
                RequestBody requestBody=RequestBody
                        .create(MediaType.parse("application/json"),json);
                Request request=new Request.Builder()
                        .url(url)
                        .post(requestBody)
                        .build();
                okHttpClient.newCall(request).enqueue(callback);
            }catch (Exception e){
                Log.e("Tag","网络请求发生异常");
            }
    }
  • 新调用类
public void fuwu(){
        OK.PJ("http://150.158.117.228:9090/c1/query_car_park", new JSONObject().toString(), new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                Log.d("e",e.toString());
            }
            @Override
            public void onResponse(Call call, Response response) throws IOException {
                String res=response.body().string();
                Log.d("res",res);
            }
        });
    }
  • 在发起无参数的post请求时,不能直接传null,而是应该传new JSONObject().toString(),以及在原有的okhttp封装类中捕获异常;

image

posted on 2022-03-31 22:23  剑九名为六千里  阅读(100)  评论(0)    收藏  举报