我目前正在编写一个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";
我非常感谢任何输入,我一直在撕扯我的头发。感谢。
答案 0 :(得分:0)
根据您发布的日志,您似乎只需更新getOutputAsXML方法,如下所示 -
private static String getOutputAsXML(WebResource service) {
ClientResponse response = service.accept(MediaType.TEXT_XML).get(ClientResponse.class);
return response.getEntity(String.class);
}