2014-11-03 2 views
0

Я пытаюсь получить ответ xml из google geocoding api. вы можете увидеть, перейдя в браузер по ссылке ниже, что xml-ответ работает отлично. однако мой Document.parse() на нем возвращает нулевой документ и при печати contentLength объекта ответа я получаю -1. Язык адреса, который я отправляю, является ивритом, но это, похоже, не имеет значения, поскольку в браузере ответ возвращается просто отлично. Может ли кто-нибудь понять, что происходит, и почему он не работает так, как предполагалось?java Документ не выполняется синтаксический анализ xml

String url = "https://maps.googleapis.com/maps/api/geocode/xml?" 
      + "address=" + URLEncoder.encode(address, "UTF-8"); 
HttpClient httpClient = new DefaultHttpClient(); 
HttpContext localContext = new BasicHttpContext(); 
System.out.println(url); 
HttpGet request = new HttpGet(url); 
HttpResponse response = httpClient.execute(request, localContext); 
System.out.println(Arrays.toString(response.getAllHeaders())); 
InputStream in = response.getEntity().getContent(); 
DocumentBuilder builder = DocumentBuilderFactory.newInstance() 
     .newDocumentBuilder(); 
doc = builder.parse(in); 
System.out.println(doc.getTextContent()); 
return doc; 

мои отпечатки (вы можете проверить ссылку на достоверность):

https://maps.googleapis.com/maps/api/geocode/xml?address=%D7%94%D7%A2%D7%9C%D7%99%D7%94+%D7%94%D7%A9%D7%A0%D7%99%D7%94+20+%D7%90%D7%96%D7%95%D7%A8 
[Content-Type: application/xml; charset=UTF-8, Date: Mon, 03 Nov 2014 19:20:50 GMT, Expires: Tue, 04 Nov 2014 19:20:50 GMT, Cache-Control: public, max-age=86400, Vary: Accept-Language, Access-Control-Allow-Origin: *, Server: mafe, X-XSS-Protection: 1; mode=block, X-Frame-Options: SAMEORIGIN, Alternate-Protocol: 443:quic,p=0.01, Transfer-Encoding: chunked] 
null 

ответ

0

нормально просто ответить на мой собственный вопрос

Я закончил с использованием

EntityUtils.toString(response.getEntity()) 

и меняя тип ответа на json, я все еще не могу понять, почему документ document.parse() не работал с указанной выше строкой и все еще запрашивая xml, он вернул правильную строку

1

Хорошо, что ваш документ кажется не нулевым. Попробуйте getFirstChild или подобное. GetTextContent будет терпеть неудачу, потому что корневой элемент, скорее всего, не будет иметь в нем никакого текста в качестве значения.

+0

хорошее мышление, но все еще null – user2717954

+0

@ user2717954 Попробуйте 'doc.getDocumentElement()'. Документ, конечно, не является нулевым, иначе вы получите «NullPointerException». – RealSkeptic

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