.NET 웹 서비스에 대한 Axis2 요청 헤더를 무시하는 방법은 무엇입니까?
-
22-07-2019 - |
문제
.NET 2.0 (물론 IIS)에서 구현 된 제 3 자 웹 서비스를 사용해야합니다.
자바 클라이언트를 만들어야합니다. 나는 wsdl2java를 사용하여 비누 스터브를 생성하고 있습니다.
원래의 Apache Axis 프로젝트가 이제 유지되지 않은 것으로 보이면서 서비스에서 일부 응답을 파싱하는 데 문제가 있었기 때문에 클라이언트를 Axis2의 최신 (1.5) 버전을 사용하도록 변환했습니다. 이제 .NET 서비스는 내 요청을 인식하지 못합니다.
나는 "청킹"을 끄는 데 도움이되었으며 (여기서 "Stub"은 wsdl2java에 의해 생성 된 유형의 mumblestub의 변수이며, 여기에 여러 줄의 코드 라인이 무엇인지 보여줍니다).
stub._getServiceClient().getOptions().setProperty( HTTPConstants.CHUNKED, Boolean.FALSE);
.. 따라서 적어도 서비스는 내 요청을 인식합니다 처럼 나쁜 것이지만 요청 : "HTTP/1.1 400 Bad Request
"지금은 응답입니다 ("소개 / 요약 "페이지가 WSDL에 대한 링크를 제공하는 페이지와 반대).
Axis ( "1") 요청에는 다른 컨텐츠 유형 헤더 (Text/XML, vs application/soap-xml)가 있음을 알았으며, 실제로 문제인 경우이 요청 헤더를 변경하는 방법이 궁금합니다.
또는 다른 사람 이이 문제가 있습니까? 문제는 실제로 (블로그 엔진에 "요소 주입"처럼 보이기 때문에 비위장이 없어) ... XML 버전-"1.0"... "XML 메타 인트로 태그"가 요청의 시작 부분에 추가 되었습니까?
WS-Deathstar.
해결책
다른 컨텐츠 유형 헤더를 언급 할 때 클라이언트가 SOAP 1.2 요청을 보내려고 시도하고 타사 앱은 SOAP 1.1 만 이해합니다.
Afaik Axis2가 기본적으로 SOAP 1.2를 사용하기 때문에 중고 비누 버전을 변경해보십시오.
stub._getServiceClient().getOptions().setSoapVersionURI(org.apache.axiom.soap.SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);