SOAP Java Axis错误:MustUnderstand未理解

SOAP Java Axis错误:MustUnderstand未理解,java,soap,axis,Java,Soap,Axis,我们必须创建一个WS-Client来使用远程服务。使用WSS$J安全配置制作ClientHandler,WSClient使用Axis从eclipse生成。我收到了这个错误,但没有找到解决它的信息。有什么想法吗 AxisFault faultCode: {http://schemas.xmlsoap.org/soap/envelope/}MustUnderstand faultSubcode: faultString: Did not understand "MustU

我们必须创建一个WS-Client来使用远程服务。使用WSS$J安全配置制作ClientHandler,WSClient使用Axis从eclipse生成。我收到了这个错误,但没有找到解决它的信息。有什么想法吗

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请求似乎正常,但出现此错误。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>

MIIFHDCCA2 YGAWIBAGIQUR762xxMDEJWWLNGUZSUSZANBGKQHKIG9W0BAQUFADB6MQSWCQYDVQGEWJVWTERMCKGA1ECGWIQUENT04GTKFDSU9OQUWGREUGQ09SUKVPUZEFB0GA1ECWWW0VSVKLDSU9
TIEVMUUK9OSUNPUZEDBSGA1EAWWUQ29YCMVvvvyWD1YXLVIC00GQ0EWHHCNMTUXMTI3MTK0NZE4WHCNYXMTI3MTK0NZE4WJCBMZEMMCQGCSQGSIB3DQEJARYXDML0YW1PBMLJBY4WnubWfPBC5JB20XEZARBG
NVBAOMCLZJVEFNSU5JQ08xezarbgNVbagmc1VbNRLDMLKZW8XCZAJBgNVbaytalVzmrgWfGyDvQfEw9SvumymtuymtcxOtawmTuxidaebgNVbammf1ZjtKfMuyBjVkFosuniiexFt05BkRPMIGFMA0GCSQGSIB3DQEBA
Quaa4Gnadcbiqkbgqc6ldwhejaqifazb1vg+o7aEckJT4hkFfTj1FqfBzbS/Ug4uXcESdmOahQPVCpJcG8jgW6HuCO1dlQ9P0Qwsxk+zjCHe+Bm4+lnFQfcn1ClMvkGJzAxE/hjbxkr1wdpcdkvt4nhmjj5w77h1p2f
J3CxC0EMALF9MPHDGFY7PWIDAQABO4IBZJCCAWIGYDWR0RBBSWGYEDML0YW1PBLJBY4WnubWfPBC5JB20WDAYDVR0TAKH/BAIwADAOBgNVHQ8BAf8EBAMCA/GWHQYDWR0LBBYIKWYBBQUHAIGCCSGAQUBWM
EMBEGCWCGSAGG+EIBAQEQEAWIFODADBGNVHQ4EFGQU96B4IO3JAVZCFCWKMB7FIYJSNXYHWYDWR0JBBGWFOAJY/fQy+OaroLvkZcV1CTt1G+/NKWWWYDWR0GBE0WSZBJBGWRBGEEEH1TWEBAQWOTA3BGGRBGEFBQCAR
YRAHR0CDOVL3DY5JB3JYZW8UY29TLNV5L2NVCN2NLCNQVY3BZLNBKZJAYBG0RBGEEEH1TWEEBAQBBACMBURPC2NVWGMDWGA1UDHWQ1MDMWMAVOC2GH2H0DHA6LY93D3CUYCMVLMNVBS51ES9DB3JYZW9DZXJ0L
2购买5JCMWWdqyjkozihvcnaqefbqadggibajvsv8h04qjnjbgl0z4ds9n47fw+uFd9O9joLfDz0fIe1jbI9TEZ+9gfpw3+YiXIfSGOMP3i/meysob42j5j9axvamxhc4th/ad8vnbgdgmqbuaaqatfandjmeghstj4
dsfZZU3VZHxcFVZdAr/SVDvljRLlQ2tgonE0Z7de7xngFzfy0vfscI3AsVFuFb6FFQlLjRnc/30TMMBBMDFYVPGZVLJQGTE5D8GSTWKY282C9QD9KCi+ZN8MGWQ5YW5JRYBJBOOVZIVQNCQ2Y42KYHHEKWPPA9QW
SGKe+HHQ216M98ILIBUKSWXOQKB+EP6jpluSYC+RSUlZ68e3lnaqx4AjM8jSCE6ZTMSvrKi9CGEIIcZ/ECZPWNGZQBBWANMOPB2YQGUAV7NNZYT9+O0MPEBXYZZSWPHHQWXAXAGMYYV2HAJQAMTOL0W
UWQ16JZSHSPLTXZSO8RYTDL5BFXW6YJTNBDM60O4BTTFLLBFO1LZIM8JPUBIZSE7+c4Ph4FTuW/HXOEE8F8HKLK0x1BF4O1ID3PDJXDLIAF66//F7z5gf8xJeams5/w7ToikOmW+PJPLOL64RVY0WJQS5/FdEXu+7i
vjrOk5xRzxdnKLIr9vUOYyFfE0627yA2mS8+uUWy41BISdsXI6z

我以前有时遇到过这样的问题,我通过这样做来解决它:

   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);

}
请注意这一行:

_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);

}
请注意这一行:

_call.setProperty(org.apache.axis.client.Call.CHECK_MUST_UNDERSTAND, Boolean.FALSE);
希望对你有用:)