2011-07-16 2 views
3


저는 항상 XML을 보내는 서버와 작업하면서 응답합니다. 하지만 때로는 서버가 부족하거나 무언가가 나에게 HTML 페이지 (오류에 대한 정보를 제공하는 html 페이지)를 보냄으로써 나를 알려주지 만 예상하지는 못했고 XML 파서가 충돌했다.
나는 DefaultHttpClient()를 사용하고 있으며, 다음과 같은 헤더를 보냅니다. mHttpRequest.setHeader("Accept", "text/xml");
XML (또는 다른 특정 형식) 응답을 얻는 올바른 방법은 무엇입니까?응답이 HTML 대신 XML 형식인지 확인하는 방법은 무엇입니까?

+0

응답의 상태 코드를 올바르게 확인하고 있습니까? HTML 페이지로 연결되는 오류 인 경우 200 OK를 받아서는 안됩니다. – FRotthowe

+0

현재 나는 모르겠다. 나는 반환 된 코드를 해결하려고 노력할 것이다 – Stan

답변

4

크리스티안 제안으로 HTML이 방출 될 때 다른 콘텐츠 형식을 제공하는 경우, 참조하십시오. doctype이나 HTML 페이지에있는 내용과 마찬가지로, 행을 확인하지 못했습니다.

+0

나는 실제로 그렇게 생각했다. – Stan

+0

모든 XML 문서가 Neftanic

3

응답의 콘텐츠 형식 헤더를 확인할 수 있습니까? 같은

뭔가 (내가 제대로 Android documentation을 이해한다면) :

"text/xml".equals(httpResponse.getEntity().getContentType().getValue()); 
+0

(일반적으로) 그것은 "text/xml"일뿐 * 수도있다. 원자 피드는 매우 눈부 시며 (흔한) 반례이다. "/ xml"* 및/또는 * "+ xml"과 일치하는 마임을 찾는 것이 더 좋습니다. [인터넷 미디어 유형] (http://en.wikipedia.org/wiki/Internet_media_type)을 참조하십시오. –

2

모든 XML에는 처음에는 문서 설명자 <?xml version="1.0" encoding="utf-8"?>이 들어 있습니다. 이것을 파싱하기 전에 이것을 확인할 수 있습니다.

그러나 난 당신이 파서에서 오류 처리 및 결과 검증이 필요하다고 생각합니다. 네트워크는 안전한 환경이 아닙니다. 네트워크에서 반쯤 깨진 XML, 변형 된 XML 또는 위조 된 XML을 쉽게 얻을 수 있습니다. 좋은 파서가이를 감지하고 충돌을 일으키지 않고 해당 오류를보고해야합니다.

+0

으로 시작하는 것은 아니지만, UTF-8이 아닐 수도있다. 그러나 그렇다. 유효한 XML 문서에는 XML 선언이 필요하다. (그럼 다시, 세상은 완벽하지 않습니다 :-) –

+0

나는 그것을 얻었다. 그냥 잡힌 예외를보고합니다. 그것은 전체 전체 애플 리케이션을 크래시하지 않습니다. – Stan

관련 문제