【问题标题】:jersey java client returning HTTP error code : 406jersey java客户端返回HTTP错误代码:406
【发布时间】:2012-08-10 14:19:12
【问题描述】:

我正在对 Teamcity URI 进行 REST 调用,以获取 lastSuccessful 内部版本号,但得到 406。如果我在 Chrome 的 REST 控制台中使用相同的 URI,我会得到正确的字符串(这是最新的内部版本号

import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.api.client.WebResource;
import com.sun.jersey.api.client.filter.HTTPBasicAuthFilter;

public class LastSuccessBuildNum {

    public static void main(String[] args) {

        try {

            Client client = Client.create();
            // client basic auth demonstration 
            client.addFilter(new HTTPBasicAuthFilter("username", "password"));

            WebResource webResource = client
                    .resource("http://localteamcity.com/teamcity/app/rest/buildTypes/id:bt26/builds/status:SUCCESS/number");
            ClientResponse response = webResource.accept("application/json")
                    .get(ClientResponse.class);

            if (response.getStatus() != 200) {
                throw new RuntimeException("Failed : HTTP error code : "
                        + response.getStatus());
            }

            String output = response.getEntity(String.class);

            System.out.println("Output from Server .... \n");
            System.out.println(output);
        } catch (Exception e) {

            e.printStackTrace();

        }

    }

}

标准输出:

java.lang.RuntimeException: Failed : HTTP error code : 406
    at LastSuccessBuildNum.main(LastSuccessBuildNum.java:22)

【问题讨论】:

    标签: java rest jersey


    【解决方案1】:

    在 Chrome REST Client 中检查传输的 MIME 类型,可能不是 json。 406表示服务器没有客户端接受的MIME类型:http://www.checkupdown.com/status/E406.html

    您使用 jersey 客户端而不是 Apache Http 组件是否有特定原因?

    【讨论】:

    • json 根据 WADL 是可用的,即使我更改为 webResource.accept("application/text") 我仍然得到 406
    • 你能在 Chrome REST 客户端的开发者工具中打开网络选项卡,并在那里查看传输的 MIME 类型吗?
    • 可能是:资源解释为图像,但使用 MIME 类型文本/javascript 传输:“ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js”。 sf_main.jsp:25 资源解释为脚本,但使用 MIME 类型 text/plain 传输:“superfish.com/ws/…”。 script.xd.js:8 资源解释为脚本,但使用 MIME 类型 text/plain 传输:“superfish.com/ws/…”。 script.xd.js:8
    • @kamal 没有 MIME tyoe application/text 试试 text/plain
    • Bingo 感谢@AlexStybaev 成功了。我想知道为什么 mkyong ref mkyong.com/webservices/jax-rs/… 有 webResource.type("application/json")
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-18
    • 2012-08-14
    • 1970-01-01
    • 1970-01-01
    • 2014-11-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多