3

lastSuccessful ビルド番号を取得するために、Teamcity URI への REST 呼び出しを実行していますが、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)
4

1 に答える 1

5

Chrome REST クライアントで転送の MIME タイプを確認してください。json ではない可能性があります。406 は、クライアントが受け入れる MIME タイプがサーバーにないことを意味します: http://www.checkupdown.com/status/E406.html

Apache Http コンポーネントの代わりに jersey クライアントを使用する特定の理由はありますか?

于 2012-08-10T14:21:31.553 に答える