【问题标题】:Android (Java/Kotlin) - Http error 400 - Bad Request and the request have only header without bodyAndroid (Java/Kotlin) - Http 错误 400 - 错误请求和请求只有标头没有正文
【发布时间】:2019-04-12 07:50:56
【问题描述】:

大家!

我一直在构建和使用我工作所在公司的 API 的应用程序。当我使用带有标头(编码、授权等)和正文(作为 JSON,使用 Content-Type =“application/json”)的 URL 连接(通过 HttpURlConnection)执行请求(GET)时,响应代码为 200 和连接工作得很好,但是我在另一个请求中使用了相同的标头但没有内容,我收到了一个错误的请求。

我已经尝试设置doOutout = false,但它不起作用。

我认为 URL 和标头一切正常,因为我执行了 Postman 的请求并收到了响应。

这是我创建连接和连接的方式:

val uri = Uri.parse("Base URL").buildUpon().appendPath(path).build() val url = URL(uri.toString()) val connection = url.openConnection() as HttpURLConnection connection.apply {
            addRequestProperty("Charset", Charsets.UTF_8.displayName())
            addRequestProperty("Authorization", "Basic $token")
            addRequestProperty("X-Serial", 5036.toString())
            requestMethod = "GET"
            connectTimeout = 0
            readTimeout = 0
            doOutput = false
            if (responseCode != HTTP_OK) throws Exception("Erro") 
        }

【问题讨论】:

  • 能否看到失败请求和响应的 JSON 结构?
  • @EamonScullion,在这个请求中没有 JSON。作为响应,JSON 看起来像这样: [ { "Id": "1", "Nome": "Name" }, { "Id": "2", "Nome": "Name" } ] 这是异常: 引起:br.com.company.app.api.resource.ResponseException: Erro da conexão com API!原因:400:在 br.com.company.app.api.resource.BandeirasClient.listarBandeiras(BandeirasClient.kt: 39)
  • 不知道请求属性 X-Serial 对 HttpUrlConnection 是否有效。此 API 正在作为用 C# 为 windows 制作的应用程序工作。

标签: java android kotlin httpurlconnection


【解决方案1】:

Bad Request 表明您的请求的形成方式存在问题。

这可能是您设置的请求标头之一存在问题。查看接受的请求标头here。

Charset 应该被命名为 Accept-Charset,我还没有看到任何使用 X-Serial 的例子。

Here 是使用 HttpUrlConnection 设置 GET 请求的示例。您可以尝试删除除 Authorization 之外的所有标头,并将请求方法设置为 GET,如本例所示。

【讨论】:

    【解决方案2】:

    我发现了问题所在:我! $token 值是使用 DEFAULT 标志生成的。意识到这一点后,我设置了 NO_WRAP 标志,我的请求成功了。

    我的错!不过感谢大家的支持!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-08
      • 1970-01-01
      • 2022-11-25
      • 1970-01-01
      • 1970-01-01
      • 2016-11-18
      • 1970-01-01
      相关资源
      最近更新 更多