Axis2 인코딩으로 인해 잘못된 비누 메시지를 생성합니다. 그것을 고치는 방법?

StackOverflow https://stackoverflow.com/questions/601771

문제

의문: 어떻게 다른 것을 사용할 수 있습니까? 인코딩 (숯 및 전송) 축으로?

내 클라이언트는 다음과 같습니다.

public Object[] invoke(String xmlRepresentation)
            throws CustomApplicationException {

            Object[] responseWS = null;
            RPCServiceClient serviceClient = new RPCServiceClient();            
            Options options = serviceClient.getOptions();           
            options.setAction("WBSREFT");
            options.setTo(new EndpointReference("http://localhost:6132"));
            QName qName = new QName(XML_SCHEMA, operation);

            Object[] args = new Object[] { "blablabla" };
            responseWS = serviceClient.invokeBlocking(qName, args, returnTypes);


            String responseAsString = (String) responseWS[0];
            return responseWS;

    }

다음은 생성되는 SOAPENVELOPE (TCP/IP 모니터를 사용하여 캡처)입니다.

<?xml version="1.0" encoding="http://schemas.xmlsoap.org/soap/envelope/"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<WBSREFT xmlns="http://tempuri.org/LICPOCSampleService">
<arg0 xmlns="">blablabla</arg0>
</WBSREFT>
</soapenv:Body>
</soapenv:Envelope>

Axis2 가이 멍청한 인코딩을 생성 한 이유 (http://schemas.xmlsoap.org/soap/envelope)???

Apache TCPMON을 사용 하여이 요청을 캡처했습니다.

POST / HTTP/1.1
Content-Type: text/xml; charset=UTF-8
SOAPAction: "WBSREFT"
User-Agent: Axis2
Host: 172.17.192.113:6133
Transfer-Encoding: chunked

102
<?xml version='1.0' encoding='UTF-8'?>
   <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
      <soapenv:Body>
         <WBSREFT xmlns="http://tempuri.org/LICPOCSampleService">
            <arg0 xmlns="">to cobol</arg0>
         </WBSREFT>
      </soapenv:Body>
   </soapenv:Envelope>0

soapui를 사용하여 XML 요청을 보내면 TCPMON이 캡처하는 것입니다.

POST / HTTP/0.9
Content-Type: text/xml;charset=UTF-8
SOAPAction: ""
User-Agent: Jakarta Commons-HttpClient/3.1
Host: 172.17.192.113:6133
Content-Length: 265

<?xml version="1.0" encoding="UTF-8"?>
   <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
      <soapenv:Body>
         <WBSREFT xmlns="http://tempuri.org/LICPOCSampleService">
            <arg0 xmlns="">to cobol</arg0>
         </WBSREFT>
      </soapenv:Body>
   </soapenv:Envelope>

XML 중간에 102와 0이 이상한 결과를 발견했습니다.

도움이 되었습니까?

해결책 2

모든 Eclipse의 플러그인 TCP/IP 모니터는 나에게 올바른 XML 요청을 제공하지 않았다.

그것은 보여주고 있었다 인코딩 = "http://schemas.xmlsoap.org/soap/envelope/", Apache Tcpmon은 나에게 다른 결과를 얻었습니다.

처럼 사우 언급하면, 문제는 청크 인코딩으로, 이것으로 변경할 수 있습니다 (그리고 내 문제를 해결했습니다).

options.setProperty(org.apache.axis2.transport.http.HTTPConstants.CHUNKED, Boolean.FALSE);

그리고 내 질문에 대답하기 위해 :

options.setProperty(org.apache.axis2.Constants.Configuration.CHARACTER_SET_ENCODING, "UTF-8");

다른 팁

XML 중간의 102와 0은 "전송 인코딩 : 청크"의 아티팩트입니다. 그들은 당신이 보내는 컨텐츠의 일부가 아닙니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top