okhttp3.HttpUrl.canonicalize(HttpUrl.java:1853)

在使用OkHttp3进行POST请求时,遇到了NullPointerException,问题源于尝试调用一个空对象的length()方法。错误发生在FormBody.Builder添加参数时,由于参数值为int类型导致。解决方案是将参数和值转换为String类型后再添加,从而避免了异常,使得请求能够正常发送。
摘要由CSDN通过智能技术生成

在使用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数据类型即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值