在使用OkHttp3时,封装了FormBody$Builder 方法,测试发送请求时一直报错如下:
Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference
10-23 17:16:17.519: W/System.err(11267): java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference
10-23 17:16:17.519: W/System.err(11267): at okhttp3.HttpUrl.canonicalize(HttpUrl.java:1853)
10-23 17:16:17.519: W/System.err(11267): at okhttp3.FormBody$Builder.add(FormBody.java:110)
10-23 17:16:17.519: W/System.err(11267): at com.zpdyf.mobileemr.utils.okhttp3.OkHttpUtil.setRequestFormBodyParamsBasic(OkHttpUtil.java:296)
10-23 17:16:17.519: W/System.err(11267): at com.zpdyf.mobileemr.utils.okhttp3.OkHttpUtil.postRequestBasicNameValuePairMethod(OkHttpUtil.java:247)
10-23 17:16:17.519: W/System.err(11267): at com.zpdyf.mobileemr.utils.okhttp3.OkHttpUtil.postRequestBasicNameValuePairMethod(OkHttpUtil.java:240)
后来排查发现是因为
FormBody.Builder formbody=new FormBody.Builder();
formbody.add(paramArrayList.get(i).getName(), paramArrayList.get(i).getValue());
在遍历参数添加时,参数值为int,导致添加参数报错,修改为:
formbody.add(paramArrayList.get(i).getName()+"", paramArrayList.get(i).getValue()+"");
后正常,把添加的参数和值转换成String数据类型即可