公司的一个项目,需要与后台开发人员对接,比较奇葩的是,测试环境没有使用token,而正式环境需要传token,然后,测试环境通了,正式环境加了token就报错了..
排查过程
首先,排查是否由于网络的原因,后台开发人员测试没问题,我这边用postman测试也是没有问题,但是APP却无法调用,猜测代码可能出现问题
之后进一步,排除是否是参数问题(传请求头是否传错),确认无误之后,才代码看起
参考着网上的资料,调整代码并测试,本来没有头绪的,忽然感觉是不是method这个方法不能用,于是便果断地改成了post方法,没想到就可以了..
解决方法
搜集资料和排查了一两个钟头,终于是发现了问题的关键,自己代码用错了
如果是请求头传参,构造Request不能使用下面这种方式
错误方式:
RequestBody body = new RequestBody.create(MediaType.parse("application/json"),json)
Request request = new Request.Builder()
.addHeader("Authorization", "Basic " + token)
.url(fullUrl)
.method("post", body) //注意这里,如果需要传请求头,不要用这种方式
.build();
正确方式:
RequestBody body = new RequestBody.create(MediaType.parse("application/json"),json)
Request request = new Request.Builder()
.addHeader("Authorization", "Basic " + token)
.url(fullUrl)
.post(body)
.build();
评论区