2011-08-19 1 views
1

우리는 Axis 1 Java 클라이언트를 실행 중이다. 웹 서비스는 때때로 의미없는 HTML 본문 내용과 함께 HTTP 오류 코드 500을 반환합니다. 이러한 경우에, 우리는 얻을Axis 1 클라이언트에서 HTTP 오류 코드를 처리하는 방법

javax.xml.soap.SOAPException: org.xml.sax.SAXParseException: Content is not allowed in prolog. at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source) 
    at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source) 
    at org.apache.xerces.jaxp.SAXParserImpl.parse(Unknown Source) 
    at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227) 
    at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696) 
    at org.apache.axis.Message.getSOAPEnvelope(Message.java:435) 
    at org.apache.axis.transport.http.HTTPSender.readFromSocket(HTTPSender.java:796) 

내가 더 클래스는 SOAP 봉투 읽기를 시도하지 않도록 HTTP 오류를 잡을 수있는 쉬운 방법이 확실 해요,하지만 난에 적절한 용어를 찾을 수 없어 구글.

Axis (client-config.wsdd)를 구성하거나 HTTP 오류 코드가 400 이상인 웹 서비스 응답을 올바르게 처리 할 수 ​​있도록 구현해야하는 핸들러는 어떻게 구성합니까?

감사 사이먼

답변

0

원인은 축 자체에있다. 유효한 SOAP 봉투가없는 경우

org.apache.axis.transport.http.HTTPSender#readFromSocket() 

는 호출은 위의 스택 트레이스가 발생, (레벨 디버그)

log.debug(outMsg.getSOAPEnvelope().toString()); 

를 기록합니다.

사이먼