如何使用AXis 1.4创建Java客户端以使用wsHttpBinding消耗WCF服务 [英] How to create java client using AXis 1.4 for consuming WCF service using wsHttpBinding

查看:110
本文介绍了如何使用AXis 1.4创建Java客户端以使用wsHttpBinding消耗WCF服务的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我创建了一个Java客户端,用于使用轴1.4消耗WCF服务.如果我使用basicHttpBinding,那么一切正常,但是如果我使用wsHttpBinding,则出现以下错误:-

I have created a java client for consuming WCF service using axis 1.4. If I use basicHttpBinding than everything works fine, but if I use wsHttpBinding than I am getting following error:-

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 let me know how can I resolve this error. Thanks.

推荐答案

当您使用Axis生成WCF服务的代理时,它将生成存根,该存根将自动为http://www.w3.org/2005/08/addressing

When you use Axis to generate proxy for a WCF service, it generates the stub that automatically sets the MustUnderstand header for http://www.w3.org/2005/08/addressing

下面的代码将MustUnderstand标志重置为false.用于被调用的方法.我今天遇到了类似的问题,并且能够使用此处发布的代码来解决

The code below resets the MustUnderstand flag back to false. for the method being invoked. I had a similar issue today and was able to resolve using the code that's posted here

//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很有帮助.

I found the this post on MustUnderstand veru helpful.

这篇关于如何使用AXis 1.4创建Java客户端以使用wsHttpBinding消耗WCF服务的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆