Как создать клиент Java с помощью AXis 1.4 для использования сервиса WCF с помощью wsHttpBinding - PullRequest
3 голосов
/ 21 июля 2010

Я создал клиент Java для использования сервиса WCF, используя ось 1.4.Если я использую basicHttpBinding, то все работает нормально, но если я использую wsHttpBinding, я получаю следующую ошибку: -

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)

Pls, дайте мне знать, как я могу устранить эту ошибку.Спасибо.

Ответы [ 2 ]

3 голосов
/ 07 марта 2014

Когда вы используете Axis для генерации прокси для службы WCF, он генерирует заглушку, которая автоматически устанавливает заголовок MustUnderstand для http://www.w3.org/2005/08/addressing

Приведенный ниже код сбрасывает флаг MustUnderstand обратно в false.для вызываемого метода.У меня была похожая проблема сегодня, и я смог ее решить, используя код, который выложен здесь

//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){}

Я нашел этот пост в MustUnderstand veru полезным.

0 голосов
/ 22 июля 2010

BasicHttpBinding или webHttpBinidng (службы REST) ​​являются единственным вариантом взаимодействия с технологиями, не относящимися к Microsoft.BasicHttpBinding является только привязкой, которая поддерживает базовый профиль 1.1 для взаимодействия.

Пожалуйста, пройдите по ссылкам ниже и посмотрите, могут ли они помочь вам разобраться в базовых ставках и ставках.

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

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

...