在执行jira搜索项目时获取404 Not Found

时间:2014-09-03 13:27:33

标签: jira jersey-client

我正在尝试使用Jersey

学习RESTFul Web服务

我已经编写了一些java代码来返回json,以便JIRA搜索项目ID,代码基于Bernd Hort创建的代码(BP206在connect2014上)

        ClientConfig config = new DefaultClientConfig();
        Client client = Client.create(config);
        HTTPBasicAuthFilter authFilter = new HTTPBasicAuthFilter("username", "password");
        client.addFilter(authFilter);
        WebResource service = client.resource(getBaseURI());

        String searchquery = "search?jql=id=" + id + "&maxResults=5000";
        System.out.println("Query=" + searchquery);

        String json = service.path(searchquery).accept(
                MediaType.APPLICATION_JSON).get(String.class);

我已使用Postman测试搜索并将其放入浏览器网址并返回数据。

http://myserver:8080/rest/api/2/search?jql=id=12408&maxResults=5000

当我在我的java代码中尝试它时,我收到以下错误;

com.sun.jersey.api.client.UniformInterfaceException: GET http://myserver:8080/rest/api/2/search%3Fjql=id=12408&maxResults=5000 returned a response status of 404 Not Found
似乎正在改变'?'到搜索不喜欢的'%3f'

1 个答案:

答案 0 :(得分:0)

您将该查询指定为路径的一部分,因此它将被转义为:

String json = service.path(searchquery).accept(
            MediaType.APPLICATION_JSON).get(String.class);

您想将其设为查询参数:

String json = service.path("search")
            .queryParam("jql", "id=" + id)
            .queryParam("maxResults", "5000)
            .accept(MediaType.APPLICATION_JSON).get(String.class);