【问题标题】:Java HttpClient media not supported error for POST methodPOST 方法的 Java HttpClient 媒体不支持错误
【发布时间】:2010-08-12 18:27:08
【问题描述】:

我正在尝试使用 httpclient,但出现媒体不支持错误。 我想设置标头,然后返回响应,该响应应该返回标头,这些标头是用于身份验证的令牌 错误:方法失败:HTTP/1.1 415 Unsupported Media Type

程序如下:

public void getDocument(String url) {
    PostMethod method = new PostMethod(url);
    client.getParams().setAuthenticationPreemptive(true);

    method.setRequestHeader("User-Agent", "some header value");

    method.addRequestHeader("Header name", "some header value");
    method.addRequestHeader("Content-type", "application/xml; charset=utf-8");
    method.addRequestHeader("Content-Body", "some header value");

    method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
            new DefaultHttpMethodRetryHandler(3, false));

    Credentials defaultcreds = new UsernamePasswordCredentials("username", "password");
    client.getState().setCredentials(AuthScope.ANY, defaultcreds);

try {
        int statusCode = client.executeMethod(method);
        if (statusCode != HttpStatus.SC_OK) {
        System.err.println("Method failed: " + method.getStatusLine());
        }

catch(Exception e) {
        System.out.println("Error in getDocument() "+e);
}

【问题讨论】:

  • 我也试过 method.addRequestHeader("Accept", "application/xml; charset=utf-8");而不是 method.addRequestHeader("Content-type", "application/xml; charset=utf-8");但仍然出现同样的错误。
  • 如果不发送 XML,为什么要将内容类型发送到 XML?

标签: http httpclient


【解决方案1】:
postMethod = new PostMethod(URL);
postMethod.addRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");

【讨论】:

  • 欢迎来到 SO,通过一些解释来扩展解决方案是个好主意。
  • ...application/x-www-form-urlencoded 上没有字符集参数
【解决方案2】:

尝试不留空白:

method.addRequestHeader("Content-Type", "application/xml;charset=UTF-8");

我不确定Content-Type 是否不区分大小写。不过,这条线对我有用。

【讨论】:

    猜你喜欢
    • 2019-08-02
    • 1970-01-01
    • 2017-03-06
    • 1970-01-01
    • 1970-01-01
    • 2018-02-15
    • 2019-08-23
    • 1970-01-01
    • 2017-08-17
    相关资源
    最近更新 更多