2014-11-03 4 views
0

Google 지오 코딩 API에서 xml 응답을 받으려고합니다. 당신은 XML 응답이 잘 작동한다는 것을 아래의 링크로 브라우저를 통해 볼 수 있습니다. 그러나 그것에 내 Document.parse() null doc 반환하고 -1 응답을 엔터티의 contentLength 인쇄 할 때. 내가 보내는 주소의 언어는 히브리어이지만 브라우저에서 응답이 정상적으로 반환되므로 문제가되지 않는 것 같습니다. 아무도 무슨 일이 일어나고 왜 의도 한대로 작동하지 않는지 이해할 수 있습니까?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()) 

및 respone 유형을 json으로 변경했는데, 왜 위와 같은 줄부터 document.parse()가 제대로 작동하지 않았는지 이해할 수 없습니다. 여전히 XML을 요청하면 올바른 문자열이 반환되었습니다.

1

좋은 점은 내 문서가 null이 아닌 것 같습니다. getFirstChild 또는 유사하게 시도하십시오. 루트 요소에 값으로 텍스트가 없을 가능성이 높으므로 GetTextContent가 실패합니다.

+0

좋은 생각이지만 여전히 null입니다. – user2717954

+0

@ user2717954'doc.getDocumentElement()'를 사용해보세요. 이 문서는 확실히 null이 아니며, 그렇지 않으면'NullPointerException'을 얻습니다. – RealSkeptic

관련 문제