Java - Jersey GET请求返回null;等效URL在浏览器中生成正确的输出

时间:2016-11-23 20:34:34

标签: java mysql xml jersey

我目前正在编写一个MySQL Web服务应用程序,它使用Jersey来使用一些GET方法,但是当我尝试从webResource对象获取输出时,会产生以下输出:

MySQL Response: GET http://localhost:9997/weathermap/db/xml returned a response status of 200 OK

MySQL Output as XML: null

我可以确认返回的网址正确。将其粘贴到浏览器中时,会生成一个输出,确认执行是否到达相应的代码块,但使用webResource方法调用此方法却没有。

以下是调用GET请求的代码:

    URI url;
    try {
        url = new URI(REST_URI + XML_PATH);

        ClientConfig config = new DefaultClientConfig();
        Client client = Client.create(config);
        //client.addFilter(new LoggingFilter(System.out));
        WebResource service = client.resource(REST_URI);

        WebResource dbService;

        dbService = service.path(XML_PATH);

        dbService = dbService.uri(url);


        System.out.println(dbService.getURI());

        System.out.println("MySQL Response: " + getResponse(dbService));
        System.out.println("MySQL Output as XML: " + getOutputAsXML(dbService));

    } catch (URISyntaxException e) {
        e.printStackTrace();
    }

    return null;
}


private static String getResponse(WebResource service) {
    return service.accept(MediaType.TEXT_XML).get(ClientResponse.class).toString();
}

private static String getOutputAsXML(WebResource service) {
    return service.accept(MediaType.TEXT_XML).get(String.class);
}

我知道我对URI / URL的指定有点混乱,但它几乎是我尝试模仿的工作方法的副本。

以下是我尝试执行的代码:

@Path("/db")
public class DatabaseREST {

    public static final String propsFile = "jdbc.properties";

    @GET
    @Path("/xml") // Placeholder
    @Produces(MediaType.TEXT_XML)
    public String getLocationXml() {
        System.out.println("GETTING HERE"); //Spoiler: doesn't reach here
        String xml = "";

        try {
            Connection connection = getConnection();
            List<String> locations = getLocations(connection);
            xml = "<?xml version=\"1.0\"?><location>";

            for (String item: locations) {
                xml += item + " ";
            }

            xml += "</location>";
        } catch (Exception e) {
            e.printStackTrace();
        }
        return xml;
    }

这样您就可以确定我的网址/ URI是否正确,以下是其定义:

static final String REST_URI = "http://localhost:9997/weathermap";
static final String XML_PATH = "/db/xml";

我非常感谢任何输入,我一直在撕扯我的头发。感谢。

1 个答案:

答案 0 :(得分:0)

根据您发布的日志,您似乎只需更新getOutputAsXML方法,如下所示 -

private static String getOutputAsXML(WebResource service) {
      ClientResponse response = service.accept(MediaType.TEXT_XML).get(ClientResponse.class);
      return response.getEntity(String.class);
}