3 Stimmen

Wie erstellt man einen Java-Client mit AXis 1.4, um einen WCF-Dienst mit wsHttpBinding zu nutzen?

Ich habe einen Java-Client für den Verbrauch von WCF-Dienst mit Achse 1.4 erstellt. Wenn ich basicHttpBinding verwenden, als alles funktioniert gut, aber wenn ich wsHttpBinding verwenden, als ich folgenden Fehler erhalten: -

Did not understand "MustUnderstand" header(s):{http://www.w3.org/2005/08/addressing}Action
AxisFault
 faultCode: {http://www.w3.org/2003/05/soap-envelope}MustUnderstand
 faultSubcode: 
 faultString: Did not understand "MustUnderstand" header(s):{http://www.w3.org/2005/08/addressing}Action
 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 org.tempuri.WSHttpBinding_IService1Stub.getData(WSHttpBinding_IService1Stub.java:171)
    at Mytes.main(Mytes.java:14)

    {http://xml.apache.org/axis/}hostname:2207A-H7-SITA

Did not understand "MustUnderstand" header(s):{http://www.w3.org/2005/08/addressing}Action
    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 org.tempuri.WSHttpBinding_IService1Stub.getData(WSHttpBinding_IService1Stub.java:171)
    at Mytes.main(Mytes.java:14)

Bitte lassen Sie mich wissen, wie ich diesen Fehler beheben kann. Danke!

4voto

vincent Punkte 41

Wenn Sie Axis verwenden, um einen Proxy für einen WCF-Dienst zu generieren, wird ein Stub erzeugt, der automatisch die MustUnderstand Kopfzeile für http://www.w3.org/2005/08/addressing

Der folgende Code setzt das MustUnderstand-Flag für die aufgerufene Methode auf false zurück. Ich hatte heute ein ähnliches Problem und konnte es mit dem Code lösen, der hier gepostet wurde

//maybe someother service stub,i show you a case
    CommentWcfServiceLocator locator =new CommentWcfServiceLocator();
    WSHttpBinding_ICommentServiceStub stub;
    try {       
    //get a stub and set service url
    stub = (WSHttpBinding_ICommentServiceStub)   locator.getWSHttpBinding_ICommentService(new         java.net.URL("http://www.google.com/CommentWcfService.svc"));

    // the key is here , importantest!!! follow this
    // set action, action path,you can find in your java code
    SOAPHeaderElement action = new SOAPHeaderElement(new QName("wsa:Action"),     "http://tempuri.org/ICommentService/GetCommentSummaryByHotelId");
    SOAPHeaderElement to = new SOAPHeaderElement(new QName("wsa:To"),
    stub._getProperty(javax.xml.rpc.Stub.ENDPOINT_ADDRESS_PROPERTY));
        action.setActor(null);
        action.setNamespaceURI("http://www.w3.org/2005/08/addressing");
        to.setActor(null);
        to.setNamespaceURI("http://www.w3.org/2005/08/addressing");
         // set header
                stub.setHeader(action);
        stub.setHeader(to);
                // must set this property
        stub._setProperty(Call.CHECK_MUST_UNDERSTAND, Boolean.FALSE);
            stub.getCommentSummaryByHotelId("","02201158", 0);
    } 
catch(Exception EX){}

Ich fand die diese Stelle auf MustUnderstand veru hilfreich.

-2voto

devson Punkte 990

BasicHttpBinding oder webHttpBinidng (REST-Dienste) sind die einzige Möglichkeit zur Interaktion mit Nicht-Microsoft-Technologien. BasicHttpBinding ist die einzige Bindung, die das Basic Profile 1.1 für die Interoperabilität unterstützt.

Bitte schauen Sie sich die untenstehenden Links an und sehen Sie, ob sie Ihnen helfen können, die Grundregeln und ws bidning zu verstehen.

http://www.devproconnections.com/article/net-framework2/choosing-the-right-web-service-binding.aspx

http://geekswithblogs.net/claeyskurt/archive/2008/04/22/121508.aspx

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X