【问题标题】:Getting 400 - Bad Request Java Client获取 400 - 错误请求 Java 客户端
【发布时间】:2016-07-22 15:42:38
【问题描述】:

我正在尝试使用小型 Java 程序发出请求,但收到 400 - Bad Request 作为响应:

URI uri = new URIBuilder().setScheme("https")
                .setHost("somehost.com")
                .setPath("/API/v1/export").build();
        HttpPost post = new HttpPost(uri);
        post.setHeader("X-API-ID", "myId");
        post.setHeader("Accept", "application/json");
        List<NameValuePair> params = new ArrayList<NameValuePair>();
        params.add(new BasicNameValuePair("format", "csv"));
        params.add(new BasicNameValuePair("userId", "userId"));
        post.setEntity(new UrlEncodedFormEntity(params));
        JsonNode responseJson = sendResponseEngineRequest(post);

这个responseJson返回以下值:

{"meta":{"httpStatus":"400 - 坏 请求","错误":{"errorMessage":"无效的内容类型。 预期=应用程序/json found=application/x-www-form-urlencoded","errorCode":"RP_0.1"}}}

提前致谢。

【问题讨论】:

    标签: java http request httpclient http-status-code-400


    【解决方案1】:

    答案就在你得到的错误中。

    您指定您将只接受post.setHeader("Accept", "application/json");,错误告诉您您请求的是found=application/x-www-form-urlencoded

    如果您可以控制请求数据的端点,请将其更改为 application/json。如果你不把post.setHeader("Accept", "application/json");改成post.setHeader("Accept", "application/x-www-form-urlencoded");

    【讨论】:

    • 能否请您告诉我如何请求“application/json”以及如何请求“application/x-www-form-urlencoded”,这对我来说并不清楚。
    • 您可以控制您从中请求数据的主机吗?
    • 不是真的,是来自提供商的主机。
    • 那么URL返回的内容类型不能更改。这意味着当您请求它时,您将无法从中获取 application/json 数据,因为这不是它返回的内容。错误消息说明它返回的内容是“application/x-www-form-urlencoded”。您可以通过在代码中将 application/json 更改为 application/x-www-form-urlencoded 来清除错误。
    • 已经尝试过了,但我仍然得到:{"meta":{"httpStatus":"400 - Bad Request","error":{"errorMessage":"Invalid Content- type.expected=application/json found=application/x-www-form-urlencoded","errorCode":"RP_0.1"}}}
    【解决方案2】:

    由于这是一个 POST 请求,您可能需要同时提供 AcceptContent-Type 标头。

    Accept: 您期望收到的内容。 Content-Type: 你发送到服务器的内容

    post.setHeader("Accept", "application/json");
    post.setHeader("Content-Type", "application/json");
    

    【讨论】:

      【解决方案3】:

      在我的程序中我也遇到了这个错误,发现链接不接受重复值。

      所以请检查您的链接它可能不接受该链接中已经可用的任何重复参数。

      【讨论】:

      • 欢迎来到 SO!由于还有其他答案,请稍微解释一下您的答案以及您的优点。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-04
      • 1970-01-01
      • 2014-07-10
      • 1970-01-01
      • 2015-04-03
      • 2019-11-10
      • 2015-08-17
      相关资源
      最近更新 更多