问题
- 调用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]()