2016-06-03 2 views
0

원격 서비스를 사용하려면 WS 클라이언트를 만들어야합니다. AxS를 사용하여 Eclipse에서 WSClient를 생성하여 WSS $ J 보안 구성으로 ClientHandler 만들기. 이 오류가 발생하고 sove에 대한 정보가 없습니다. 어떤 아이디어?SOAP Java Axis 오류 : MustUnderstand 이해되지 않음

AxisFault 
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}MustUnderstand 
    faultSubcode: 
faultString: Did not understand "MustUnderstand" header(s): {http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-  1.0.xsd}Security 
faultActor: 
faultNode: 
faultDetail: 
{http://xml.apache.org/axis/}stackTrace: 
at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:96) 
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206) 
at org.apache.axis.client.Call.invokeEngine(Call.java:2784) 
at org.apache.axis.client.Call.invoke(Call.java:2767) 
at org.apache.axis.client.Call.invoke(Call.java:2443) 
at org.apache.axis.client.Call.invoke(Call.java:2366) 
at org.apache.axis.client.Call.invoke(Call.java:1812) 
at uy.gub.dgi.WS_eFacturaSoapBindingStub.EFACRECEPCIONSOBRE(WS_eFacturaSoapBindingStub.java:306) 
at com.justinfact.web.ws.EFacturaClient.main(EFacturaClient.java:51) 

{http://xml.apache.org/axis/}hostname:jirazazabal-pc 

Did not understand "MustUnderstand" header(s):{http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd}Security 
at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:96) 
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206) 
at org.apache.axis.client.Call.invokeEngine(Call.java:2784) 
at org.apache.axis.client.Call.invoke(Call.java:2767) 
at org.apache.axis.client.Call.invoke(Call.java:2443) 
at org.apache.axis.client.Call.invoke(Call.java:2366) 
at org.apache.axis.client.Call.invoke(Call.java:1812) 
at uy.gub.dgi.WS_eFacturaSoapBindingStub.EFACRECEPCIONSOBRE(WS_eFacturaSoapBindingStub.java:306) 
at com.justinfact.web.ws.EFacturaClient.main(EFacturaClient.java:51) 
AxisFault 
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}MustUnderstand 
faultSubcode: 
faultString: Did not understand "MustUnderstand" header(s): {http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext- 1.0.xsd}Security 
faultActor: 
faultNode: 
faultDetail: 
{http://xml.apache.org/axis/}stackTrace: 
at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:96) 
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206) 
at org.apache.axis.client.Call.invokeEngine(Call.java:2784) 
at org.apache.axis.client.Call.invoke(Call.java:2767) 
at org.apache.axis.client.Call.invoke(Call.java:2443) 
at org.apache.axis.client.Call.invoke(Call.java:2366) 
at org.apache.axis.client.Call.invoke(Call.java:1812) 
at uy.gub.dgi.WS_eFacturaSoapBindingStub.EFACRECEPCIONSOBRE(WS_eFacturaSoapBindingStub.java:306) 
at com.justinfact.web.ws.EFacturaClient.main(EFacturaClient.java:51) 

{http://xml.apache.org/axis/}hostname:jirazazabal-pc 

Did not understand "MustUnderstand" header(s):{http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd}Security 
at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:96) 
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206) 
at org.apache.axis.client.Call.invokeEngine(Call.java:2784) 
at org.apache.axis.client.Call.invoke(Call.java:2767) 
at org.apache.axis.client.Call.invoke(Call.java:2443) 
at org.apache.axis.client.Call.invoke(Call.java:2366) 
at org.apache.axis.client.Call.invoke(Call.java:1812) 
at uy.gub.dgi.WS_eFacturaSoapBindingStub.EFACRECEPCIONSOBRE(WS_eFacturaSoapBindingStub.java:306) 
at com.justinfact.web.ws.EFacturaClient.main(EFacturaClient.java:51) 

SOAP 요청은 괜찮을 것 같다,하지만이 오류가. 내가 가끔 전에 이런 문제가 있었

<?xml version="1.0" encoding="UTF-8"?> 
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
       mlns:xsd="http://www.w3.org/2001/XMLSchema" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
<soapenv:Header> 
    <wsse:Security soapenv:mustUnderstand="1" 
        xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" 
        xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> 
    <wsse:BinarySecurityToken EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" 
           ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" 
           wsu:Id="X509-47B7B0AB8DD8408E9814649487947394"> 
     MIIFhDCCA2ygAwIBAgIQUR762xXMDeJWWLNGuZSuszANBgkqhkiG9w0BAQUFADB6MQswCQYDVQQGEwJVWTErMCkGA1UECgwiQURNSU5JU1RSQUNJT04gTkFDSU9OQUwgREUgQ09SUkVPUzEfMB0GA1UECwwWU0VSVklDSU9 
     TIEVMRUNUUk9OSUNPUzEdMBsGA1UEAwwUQ29ycmVvIFVydWd1YXlvIC0gQ0EwHhcNMTUxMTI3MTk0NzE4WhcNMTYxMTI3MTk0NzE4WjCBmzEmMCQGCSqGSIb3DQEJARYXdml0YW1pbmljby4wNUBnbWFpbC5jb20xEzARBg 
     NVBAoMClZJVEFNSU5JQ08xEzARBgNVBAgMCk1vbnRldmlkZW8xCzAJBgNVBAYTAlVZMRgwFgYDVQQFEw9SVUMyMTUyMTcxOTAwMTUxIDAeBgNVBAMMF1ZJTkFMUyBJVkFOSUNIIExFT05BUkRPMIGfMA0GCSqGSIb3DQEBA 
     QUAA4GNADCBiQKBgQC6LdZWhEJaqiFaZb1VG+o7aEckJT4hkFfTj1FqfBzbS/Ug4uXcESdmOahQPVCpJcG8jgW6HuCO1dlQ9P0Qwsxk+zjCHe+Bm4+lnFQfcn1ClMvkGJzAxE/HJbBXkr1WDpcDKVt4nhMjGYj5w77H1p2F 
     j3CXC0eMAlf9MpHDgFy7pwIDAQABo4IBZjCCAWIwIgYDVR0RBBswGYEXdml0YW1pbmljby4wNUBnbWFpbC5jb20wDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCA/gwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwM 
     EMBEGCWCGSAGG+EIBAQQEAwIFoDAdBgNVHQ4EFgQU96b4IO3javZcFCwkmb7fiyJsNXYwHwYDVR0jBBgwFoAUJY/fQy+OaroLvkZcV1CTt1G+/NkwVAYDVR0gBE0wSzBJBgwrBgEEAYH1TwEBAQQwOTA3BggrBgEFBQcCAR 
     YraHR0cDovL3d3dy5jb3JyZW8uY29tLnV5L2NvcnJlb2NlcnQvY3BzLnBkZjAYBg0rBgEEAYH1TwEBAQQBBAcMBURpc2NvMDwGA1UdHwQ1MDMwMaAvoC2GK2h0dHA6Ly93d3cuY29ycmVvLmNvbS51eS9Db3JyZW9DZXJ0L 
     2FuYy5jcmwwDQYJKoZIhvcNAQEFBQADggIBAJVsv8h04QjnJBGl0Z4DS9n47Fw+uFd9O9joLfDz0fIe1jbI9TEZ+9gfpw3+YiXIfSGOMP3i/MeIYSob42J5J9AxvAmxhC4TTH/AD8VnbGdGmqbUaaQAtFandJMegHihSJt4 
     dsfZZU3VZHxcFVZdAr/SVDvljRLlQ2tgonE0Z7de7xngFzfy0vfscI3AsVFuFb6FFQlLjRnc/30TmMbbmdFyVPGZvVLJqgTe5d8gSTwky282C9qd9kcI+zN8mGwq5ByW5JsrYbJbOO0vXZiV4WQNcq2Y42kYHHekWPPA9Qw 
     SGKe+hHQ216M98iLIBQukSWxoQkB+EP6jpluSYC+RSUlZ68e3lnaqx4AjM8jSCE6ZTMSvrKi9CGEIIcZ/EczpwnGzqBBwanMopB2yQGuoV7nnzyt9+O0MpEbxyXYzsWPhhqwXAgmyUyVXivg2HAjqAjhMTOLHDXLJLKKL0w 
     UWq16jZshSpLTXzsO8rYtDl5bFXW6YjeTNBDm60o4bTTFLLbfO1LZIM8JpubIzsE7+c4Ph4FTuW/HxOE8F8HkLk0X1bxf4o1Did3pDjXDlIafi66//F7z5gf8xJeams5/w7ToikOmW+pjpLolOT64RvY0WjQs5/FdEXu+7i 
     vjrOk5xRzxdnKLIr9vUOYyFfE0627yA2mS8+uUWy41BISdsXI6z 
    </wsse:BinarySecurityToken> 

답변

1

그리고 난 이런 일을 수행하여 문제를 해결 : 같은 SOAP의 헤더입니다

_call.setProperty(org.apache.axis.client.Call.CHECK_MUST_UNDERSTAND, Boolean.FALSE); 
:이 라인에

public String callWS(String arg1 ,String arg2){ 
org.apache.axis.client.Call _call = createCall(); 
     _call.setOperation(_operations[0]); 
     _call.setUseSOAPAction(true); 
     _call.setSOAPActionURI("web service URL"); 
     _call.setEncodingStyle(null); 
     _call.setProperty(org.apache.axis.client.Call.SEND_TYPE_ATTR, Boolean.FALSE); 
     _call.setProperty(org.apache.axis.AxisEngine.PROP_DOMULTIREFS, Boolean.FALSE); 
     //pay attention to line below 
     _call.setProperty(org.apache.axis.client.Call.CHECK_MUST_UNDERSTAND, Boolean.FALSE); 
     _call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP12_CONSTANTS); 
     _call.setOperationName(new javax.xml.namespace.QName("http://zzzzz", "xxxx")); 
     setRequestHeaders(_call); 
     setAttachments(_call); 

     Object _resp = _call.invoke(new Object[] {arg1,arg2}); 
     return (String) org.apache.axis.utils.JavaUtils.convert(_resp, String.class); 

} 

에주의를

그것이 당신을 위해 일하기를 바랍니다 :)