java如何调用C#编写的webservice??急需!!

解决方案 »

  1.   

    把webservice的wsdl拿来,然后使用axis的wsdl2java生成客户端代码,就像调用本地的API一样使用
      

  2.   

    好像需要引入
    import org.apache.axis.client.Call;
    import org.apache.axis.client.Service;
    这两个包,但是我在axis官方网站上http://ws.apache.org/axis/下载里面全是英文,能不能帮帮我告诉我从哪下载???
    谢谢啊
      

  3.   

    axis 或 cxf 到apache网站可以找到
      

  4.   

    http://navistar.uicp.net/sanyECCwebservices/services/ServiceCVS?wsdl
    这是webservice  服务端package shinco.wsclient;import javax.jws.WebMethod;
    import javax.jws.WebParam;
    import javax.jws.WebResult;
    import javax.jws.WebService;
    import javax.jws.soap.SOAPBinding;@WebService(name = "ServiceCVSPortType", targetNamespace = "http://webservices.sany.gx.com")
    @SOAPBinding(use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED)
    public interface ServiceCVSPortType { @WebMethod(operationName = "example", action = "")
    @WebResult(name = "out", targetNamespace = "http://webservices.sany.gx.com")
    public String example(
    @WebParam(name = "in0", targetNamespace = "http://webservices.sany.gx.com")
    String in0); @WebMethod(operationName = "getData", action = "")
    @WebResult(name = "out", targetNamespace = "http://webservices.sany.gx.com")
    public String getData(
    @WebParam(name = "in0", targetNamespace = "http://webservices.sany.gx.com")
    String in0);}
    package shinco.wsclient;import java.net.MalformedURLException;
    import java.util.Collection;
    import java.util.HashMap;
    import javax.xml.namespace.QName;
    import org.codehaus.xfire.XFireRuntimeException;
    import org.codehaus.xfire.aegis.AegisBindingProvider;
    import org.codehaus.xfire.annotations.AnnotationServiceFactory;
    import org.codehaus.xfire.annotations.jsr181.Jsr181WebAnnotations;
    import org.codehaus.xfire.client.XFireProxyFactory;
    import org.codehaus.xfire.jaxb2.JaxbTypeRegistry;
    import org.codehaus.xfire.service.Endpoint;
    import org.codehaus.xfire.service.Service;
    import org.codehaus.xfire.soap.AbstractSoapBinding;
    import org.codehaus.xfire.transport.TransportManager;public class ServiceCVSClient {    private static XFireProxyFactory proxyFactory = new XFireProxyFactory();
        private HashMap endpoints = new HashMap();
        private Service service0;    public ServiceCVSClient() {
            create0();
            Endpoint ServiceCVSHttpPortEP = service0 .addEndpoint(new QName("http://webservices.sany.gx.com", "ServiceCVSHttpPort"), new QName("http://webservices.sany.gx.com", "ServiceCVSHttpBinding"), "http://navistar.uicp.net/sanyECCwebservices/services/ServiceCVS");
            endpoints.put(new QName("http://webservices.sany.gx.com", "ServiceCVSHttpPort"), ServiceCVSHttpPortEP);
            Endpoint ServiceCVSPortTypeLocalEndpointEP = service0 .addEndpoint(new QName("http://webservices.sany.gx.com", "ServiceCVSPortTypeLocalEndpoint"), new QName("http://webservices.sany.gx.com", "ServiceCVSPortTypeLocalBinding"), "xfire.local://ServiceCVS");
            endpoints.put(new QName("http://webservices.sany.gx.com", "ServiceCVSPortTypeLocalEndpoint"), ServiceCVSPortTypeLocalEndpointEP);
        }    public Object getEndpoint(Endpoint endpoint) {
            try {
                return proxyFactory.create((endpoint).getBinding(), (endpoint).getUrl());
            } catch (MalformedURLException e) {
                throw new XFireRuntimeException("Invalid URL", e);
            }
        }    public Object getEndpoint(QName name) {
            Endpoint endpoint = ((Endpoint) endpoints.get((name)));
            if ((endpoint) == null) {
                throw new IllegalStateException("No such endpoint!");
            }
            return getEndpoint((endpoint));
        }    public Collection getEndpoints() {
            return endpoints.values();
        }    private void create0() {
            TransportManager tm = (org.codehaus.xfire.XFireFactory.newInstance().getXFire().getTransportManager());
            HashMap props = new HashMap();
            props.put("annotations.allow.interface", true);
            AnnotationServiceFactory asf = new AnnotationServiceFactory(new Jsr181WebAnnotations(), tm, new AegisBindingProvider(new JaxbTypeRegistry()));
            asf.setBindingCreationEnabled(false);
            service0 = asf.create((shinco.wsclient.ServiceCVSPortType.class), props);
            {
                AbstractSoapBinding soapBinding = asf.createSoap11Binding(service0, new QName("http://webservices.sany.gx.com", "ServiceCVSHttpBinding"), "http://schemas.xmlsoap.org/soap/http");
            }
            {
                AbstractSoapBinding soapBinding = asf.createSoap11Binding(service0, new QName("http://webservices.sany.gx.com", "ServiceCVSPortTypeLocalBinding"), "urn:xfire:transport:local");
            }
        }    public ServiceCVSPortType getServiceCVSHttpPort() {
            return ((ServiceCVSPortType)(this).getEndpoint(new QName("http://webservices.sany.gx.com", "ServiceCVSHttpPort")));
        }    public ServiceCVSPortType getServiceCVSHttpPort(String url) {
            ServiceCVSPortType var = getServiceCVSHttpPort();
            org.codehaus.xfire.client.Client.getInstance(var).setUrl(url);
            return var;
        }    public ServiceCVSPortType getServiceCVSPortTypeLocalEndpoint() {
            return ((ServiceCVSPortType)(this).getEndpoint(new QName("http://webservices.sany.gx.com", "ServiceCVSPortTypeLocalEndpoint")));
        }    public ServiceCVSPortType getServiceCVSPortTypeLocalEndpoint(String url) {
            ServiceCVSPortType var = getServiceCVSPortTypeLocalEndpoint();
            org.codehaus.xfire.client.Client.getInstance(var).setUrl(url);
            return var;
        }}package shinco.wsclient;public class WsClient {
    public static void main(String[] args) {
    ServiceCVSClient client = new ServiceCVSClient();
    ServiceCVSPortType service = client.getServiceCVSHttpPort(); String data = new WsClient().example("hello");
    System.out.println("data= " + service.getData(data));
    System.out.println("test client completed");
    System.exit(0);
    }
                           
    }
      

  5.   

    注意:
    不是所有C#写的webservice,Java的客户端度能调用的。
      

  6.   

    5楼的wsdl可以访问到的,随便生成了个客户端,结果hello hello
    The data error,please the success of the data sent另外楼上说的对,java的webservice,C#来调用麽有问题的。反过经常会出问题。
      

  7.   

     String url = "http://127.0.0.1/testws/createws.asmx";
                service = new Service();
              service.getEngine().setOption(
                      org.apache.axis.AxisEngine.PROP_XML_ENCODING, "UTF-8");
              Call call = (Call) service.createCall();
              call.setTargetEndpointAddress(new java.net.URL(url));
              call.setProperty(Call.SOAPACTION_USE_PROPERTY, new Boolean(true));
              call.setProperty(Call.SOAPACTION_URI_PROPERTY,
                      "http://www.test.com/CreateOrder");
              call.setProperty(Call.OPERATION_STYLE_PROPERTY, "document");
              call.setOperationName("CreateOrder");
              call.addParameter(new javax.xml.namespace.QName("http://www.test.com/",
                      "CreateOrder"), XMLType.SOAP_DOCUMENT, ParameterMode.IN);
              call.setReturnType(XMLType.SOAP_DOCUMENT);
              Document rt = (Document) call.invoke(new Object[] { doc });我是这样调用的。