本人急求一段java调用WebService的接口Demo案例,麻烦哪位大神,高手给个例子或者指定一二。。非常谢谢了。我自己在网上找了一个例子:        Service service=new Service();
Call call=(Call) service.createCall();
String url="http://172.16.8.71/OAServices/WebService.asmx";
    call.setTargetEndpointAddress(new java.net.URL(url));
    call.setUseSOAPAction( true );
    call.setSOAPActionURI("http://tempuri.org/HelloWorld") ;
    call.setOperationName(new QName("http://tempuri.org/", " HelloWorld")) ;
    call.addParameter("name", org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN) ;
    call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);
    String s=(String ) call.invoke("HelloWorld",new Object[]{"张三"});
    System.out.println("========="+s);但是报错:
    faultString: 服务器未能识别 HTTP 头 SOAPAction 的值: http://tempuri.org/HelloWorld。
 faultActor: 
 faultNode: 
 faultDetail: 
{http://xml.apache.org/axis/}stackTrace:服务器未能识别 HTTP 头 SOAPAction 的值: http://tempuri.org/HelloWorld。
at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)
at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)
at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:601)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1782)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2938)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:395)
at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
[color=#FF0000] 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:2391)
at com.dlam.demo.test
.Test1.main(Test1.java:20)[/color]      

解决方案 »

  1.   

    ?这个可以打开不 http://172.16.8.71/OAServices/WebService.asmx
      

  2.   

    call.setOperationName(new QName(nameSpace,method));
    call.setUseSOAPAction(true);
    call.setSOAPActionURI(nameSpace + method); 
      

  3.   

    嗯,可以打开!现在可以访问到了,但我传的参数好像不行,例如在C#:有个接口的方法:
           public String HelloWorld(string name){                  
               return name+"Hello";         }我在java中调用,并且传参:
                Service service=new Service();
    Call call=(Call) service.createCall();
    String url="http://172.16.8.71/OAServices/WebService.asmx";
        call.setTargetEndpointAddress(new java.net.URL(url));
        call.setUseSOAPAction( true );
        call.setSOAPActionURI("http://tempuri.org/HelloWorld") ;
        call.setOperationName(new QName("http://tempuri.org/", " HelloWorld")) ;
        call.addParameter(new QName("http://tempuri.org/T/HelloWorld","name"),org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);
        call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);
        String s=(String ) call.invoke("HelloWorld",new Object[]{"张三"});
    我现在可以访问了,
         在控制台输出:Hello, 但我传参数了。用该输出:张三Hello啊!为什么不行啊  请指教!              
      

  4.   

      call.addParameter(new QName("http://tempuri.org/T/HelloWorld" ,"name"),你这个   http://tempuri.org/T/HelloWorld   应该是namespace 吧
      

  5.   

    HellWorld是接口的方法名,name是是接口里面的参数,方法名和参数的调用都和C#中的一致!是什么原因呢?
    请指教!
      谢谢
      

  6.   

    http://tempuri.org/T/HelloWorld 这个改成http://tempuri.org/ 可以不
      

  7.   

    http://172.16.8.71/OAServices/WebService.asmx  这里面输入hello 是可以的吧
      

  8.   

     String s=(String)call.invoke(new Object[]{"张三"});
      

  9.   

    不行! 这样就报错了,
    (400)Bad Request at org.apache.axis.transport.http.HTTPSender.readFromSocket(HTTPSender.java:744)
      

  10.   

    http://blog.csdn.net/s478853630/article/details/9670049  东雪晶  看懂就好了!!