从java客户端中的http响应中提取字符串

时间:2014-12-17 09:46:37

标签: java web-services httpresponse

我想从java客户端中提取从java web服务返回的字符串。从java Web服务返回的字符串如下:

{"Name":"Raj Johri","Email":"mailraj@server.com","status":true}

哪个是Json字符串格式。我编写了客户端代码来提取此字符串,如下所示:

public static void main(String[] args) throws Exception{
    DefaultHttpClient httpClient = new DefaultHttpClient();
    HttpPost post = new HttpPost("http://localhost:8080/JsonWebService/services/JsonWebService/getData");
    post.setHeader("Content-Type", "application/xml");
    HttpResponse httpres = httpClient.execute(post);
    HttpEntity entity = httpres.getEntity();
    String json = EntityUtils.toString(entity).toString();
    System.out.println("json:" + json);
}

我正在控制台上为json打印以下内容:

json:<ns:getDataResponse xmlns:ns="http://ws.jsonweb.com"><ns:return>{"Name":"Raj Johri","Email":"mailraj@server.com","status":true}</ns:return></ns:getDataResponse>

请告诉我如何提取字符串

{"Name":"Raj Johri","Email":"mailraj@server.com","status":true}

这是实际的消息。提前谢谢......

2 个答案:

答案 0 :(得分:1)

好吧,响应是 xml 的类型, json 位于<ns:return> 节点,所以我建议您可以输入xml结果的深度,只需从<ns:return>节点获取json。

注意: 我建议您尝试指定您需要响应为 JSON类型

post.setHeader("Content-type", "application/json");
post.setHeader("Accept", "application/json");

答案 1 :(得分:0)

有一种肮脏的方法(在xml解析方式旁边) 如果你每次都得到相同的XML, 你可以使用split()

String parts[] = json.split("<ns:return>");
parts = parts[1].split("</ns:return>");
String jsonPart = parts[0];

现在jsonPart应仅包含{"Name":"Raj Johri","Email":"mailraj@server.com","status":true}