2014-12-17 1 views
0

Я хочу извлечь строку, возвращенную из java-сервиса в java-клиенте. Строка, возвращаемая из веб-службы java, выглядит следующим образом:Извлечь строку из ответа HTTP в java-клиенте

{"Name":"Raj Johri","Email":"[email protected]","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":"[email protected]","status":true}</ns:return></ns:getDataResponse> 

Пожалуйста, скажите мне, как извлечь строковое

{"Name":"Raj Johri","Email":"[email protected]","status":true} 

который является фактическим сообщением. Заранее спасибо ...

ответ

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":"[email protected]","status":true}

+0

Спасибо, независимо от его грязного пути, но отлично работает для меня ... –

1

Ну, RESPONS как тип XML, и ваш JSON находится в <ns:return>узла, поэтому я предлагаю вам войти в глубину результата XML и просто получить ваш json из узла <ns:return>.

Примечание: Я предлагаю вам попытаться указать, что вам нужен ответ как JSON типа:

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

Благодарим за ответ. Я попробовал это, но дал исключение xml: lang = "en-US"> com.ctc.wstx.exc.WstxEOFException –

Смежные вопросы