当前位置: 首页 > 知识库问答 >
问题:

错误代码400当使用OkHttp3请求后端时,Chrome返回200 OK

公孙弘图
2023-03-14

我需要连接到后端并获得响应。我设置了一个拦截器,在发送请求之前输入我的凭据。

  val credential: String = Credentials.basic("user123", "myPassword")

  override fun intercept(chain: Interceptor.Chain): Response {
  val originalRequest = chain.request()
  val requestWithUserAgent = originalRequest.newBuilder()
    .addHeader(AUTHORIZATION, credentials)
    .build()
  
  return chain.proceed(requestWithUserAgent)
}
private const val AUTHORIZATION = "Authorization"

在这种情况下,我收到错误代码400,没有正文。然而,当我在网络导航器(Chrome)上尝试同样的操作时,我得到了授权并有访问权限,我可以看到响应。

我尝试登录的任何其他表单(Base64)或smth else返回错误代码401。在标题中:Www Authenticate:Basic realm=“我的领域”。

这里会有什么问题?我应该在标题中为我的android请求添加什么?

共有2个答案

澹台锐
2023-03-14

供将来参考。问题是缺少Accept标头。

 val requestWithUserAgent = originalRequest.newBuilder()
   .addHeader(AUTHORIZATION, credentials)
   .addHeader("Accept", "application/json")
   .build()

添加它将解决问题。

司徒俊良
2023-03-14

很难说问题是什么。但是您可以比较原始请求(标头响应主体)。

您可以通过Fiddler/Charles或其他软件从您的手机捕获流量,并查看原始请求之间的不同(一个从您的手机发出,另一个通过Chrome)。也许您忘记了请求正文或其他内容中的某些标头或参数。

如何在设备上启动fiddler:https://www.telerik.com/blogs/how-to-capture-android-traffic-with-fiddler

 类似资料:
  • 问题内容: 这工作正常: 这将返回400 Bad Request(只是使用.ajax来支持错误处理的上述jQuery的重新格式)。 问题答案: 我认为您只需要再添加2个选项(和):

  • 我试图使用Gmail API将用户设置应用到Gmail帐户,但它不断返回错误400错误请求。 我可以看到错误代码在Gmail API控制台,它来自我的服务号,所以代码不可能是如此错误,但它让我发疯,只是不能找出什么是错误的。 如果有人能给我指出正确的方向,我会非常感激。

  • 问题内容: 我有这个应用程序,它可以在本地运行,并且在部署时可以使用.mdf SQL Express数据库文件(通常用于测试目的)。但是,当我将其更改为可与我们的SQL Server 2008一起使用时,该应用程序可以运行,但该服务无法运行。 例如,如果在页面后面的代码中,我有一个按钮可以向表中添加数据,例如: 我的web.config设置为在该服务器上使用模拟,并且一切运行良好。但是,对于我的服

  • 我试图对我写的rest api执行一个put请求,但它总是返回400-bug请求。 java.io.IO异常:服务器返回HTTP响应代码:400为URL:http://localhost:8000/api/v0/contacts/2sun.net.www.protocol.http.HttpURLConnection.getInputStream(未知来源) 我可以用firefox rest客户端

  • 我可以捕获400的错误代码并输出一个自定义错误,但我肯定我一定做错了,从Mailchimp API得到如此无益的响应? 非常感谢,安迪和所有的帮助都很感激。

  • 我一直在尝试使用集成到Codename one项目中的本机共享按钮,除了当我单击“发布”时,会出现“400:错误请求”错误。没有抛出异常,我的控制台中也没有堆栈跟踪。 代码: 另一个问题是,要共享的文本是不可见的。 截图