侧边栏壁纸
博主头像
Stars-One的杂货小窝博主等级

所有的创作都是有价值的

  • 累计撰写 257 篇文章
  • 累计创建 46 个标签
  • 累计收到 27 条评论

目 录CONTENT

文章目录

Android 400 bad request错误(Okhttp3大坑 )

Stars-one
2021-05-25 / 2 评论 / 0 点赞 / 1310 阅读 / 2321 字

公司的一个项目,需要与后台开发人员对接,比较奇葩的是,测试环境没有使用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();

参考

0

评论区