我用xfire根据对方给的wsdl生成了一个服务端服务建完成后对方访问服务后返回的是一个自定义对象类型,对方却接收不到这个对象,对方是用.net。谁能够帮忙解决!非常感谢!

解决方案 »

  1.   

    好像是两个生成wsdl不太一样,我粘你看一下:<?xml version="1.0" encoding="gb2312"?>
    <wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://CRMInterface.Customer.Besttone.cn" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" targetNamespace="http://CRMInterface.Customer.Besttone.cn" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
      <wsdl:types>
        <s:schema elementFormDefault="qualified" targetNamespace="http://CRMInterface.Customer.Besttone.cn">
          <s:element name="CRMUserAuth">
            <s:complexType>
              <s:sequence>
                <s:element minOccurs="0" maxOccurs="1" name="SystemsID" type="s:string" />
                <s:element minOccurs="0" maxOccurs="1" name="AuthenName" type="s:string" />
                <s:element minOccurs="0" maxOccurs="1" name="AuthenType" type="s:string" />
                <s:element minOccurs="0" maxOccurs="1" name="CustType" type="s:string" />
                <s:element minOccurs="0" maxOccurs="1" name="Password" type="s:string" />
                <s:element minOccurs="0" maxOccurs="1" name="AreaCode" type="s:string" />
                <s:element minOccurs="0" maxOccurs="1" name="ExtendField" type="s:string" />
              </s:sequence>
            </s:complexType>
          </s:element>
          <s:element name="CRMUserAuthResponse">
            <s:complexType>
              <s:sequence>
                <s:element minOccurs="0" maxOccurs="1" name="CRMUserAuthResult" type="tns:CRMUserAuthResult" />
              </s:sequence>
            </s:complexType>
          </s:element>
          <s:complexType name="CRMUserAuthResult">
            <s:sequence>
              <s:element minOccurs="1" maxOccurs="1" name="Result" type="s:int" />
              <s:element minOccurs="0" maxOccurs="1" name="ErrorDescription" type="s:string" />
              <s:element minOccurs="0" maxOccurs="1" name="ExtendField" type="s:string" />
            </s:sequence>
          </s:complexType>
        </s:schema>
      </wsdl:types>
      <wsdl:message name="CRMUserAuthSoapIn">
        <wsdl:part name="parameters" element="tns:CRMUserAuth" />
      </wsdl:message>
      <wsdl:message name="CRMUserAuthSoapOut">
        <wsdl:part name="parameters" element="tns:CRMUserAuthResponse" />
      </wsdl:message>
      <wsdl:portType name="CRMForBTUCenterSoap">
        <wsdl:operation name="CRMUserAuth">
          <wsdl:input message="tns:CRMUserAuthSoapIn" />
          <wsdl:output message="tns:CRMUserAuthSoapOut" />
        </wsdl:operation>
      </wsdl:portType>
      <wsdl:binding name="CRMForBTUCenterSoap" type="tns:CRMForBTUCenterSoap">
        <soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
        <wsdl:operation name="CRMUserAuth">
          <soap:operation soapAction="http://CRMInterface.Customer.Besttone.cn/CRMUserAuth" style="document" />
          <wsdl:input>
            <soap:body use="literal" />
          </wsdl:input>
          <wsdl:output>
            <soap:body use="literal" />
          </wsdl:output>
        </wsdl:operation>
      </wsdl:binding>
      <wsdl:binding name="CRMForBTUCenterSoap12" type="tns:CRMForBTUCenterSoap">
        <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" />
        <wsdl:operation name="CRMUserAuth">
          <soap12:operation soapAction="http://CRMInterface.Customer.Besttone.cn/CRMUserAuth" style="document" />
          <wsdl:input>
            <soap12:body use="literal" />
          </wsdl:input>
          <wsdl:output>
            <soap12:body use="literal" />
          </wsdl:output>
        </wsdl:operation>
      </wsdl:binding>
      <wsdl:service name="CRMForBTUCenter">
        <wsdl:port name="CRMForBTUCenterSoap" binding="tns:CRMForBTUCenterSoap">
          <soap:address location="http://localhost/BestTone2UCenterInterface/CRMForBTUCenter/CRMForBTUCenter.asmx" />
        </wsdl:port>
        <wsdl:port name="CRMForBTUCenterSoap12" binding="tns:CRMForBTUCenterSoap12">
          <soap12:address location="http://localhost/BestTone2UCenterInterface/CRMForBTUCenter/CRMForBTUCenter.asmx" />
        </wsdl:port>
      </wsdl:service>
    </wsdl:definitions>
    下面是我这边生成的:<?xml version="1.0" encoding="UTF-8"?>
    <wsdl:definitions targetNamespace="http://CRMInterface.Customer.Besttone.cn" xmlns:ns1="http://crminterface.customer.besttone.cn" xmlns:soapenc12="http://www.w3.org/2003/05/soap-encoding" xmlns:tns="http://CRMInterface.Customer.Besttone.cn" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc11="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
      <wsdl:types>
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://CRMInterface.Customer.Besttone.cn">
    <xsd:element name="CRMUserAuth">
    <xsd:complexType>
    <xsd:sequence>
    <xsd:element maxOccurs="1" minOccurs="1" name="SystemsID" nillable="true" type="xsd:string"/>
    <xsd:element maxOccurs="1" minOccurs="1" name="AuthenName" nillable="true" type="xsd:string"/>
    <xsd:element maxOccurs="1" minOccurs="1" name="AuthenType" nillable="true" type="xsd:string"/>
    <xsd:element maxOccurs="1" minOccurs="1" name="CustType" nillable="true" type="xsd:string"/>
    <xsd:element maxOccurs="1" minOccurs="1" name="Password" nillable="true" type="xsd:string"/>
    <xsd:element maxOccurs="1" minOccurs="1" name="AreaCode" nillable="true" type="xsd:string"/>
    <xsd:element maxOccurs="1" minOccurs="1" name="ExtendField" nillable="true" type="xsd:string"/>
    </xsd:sequence>
    </xsd:complexType></xsd:element>
    <xsd:element name="CRMUserAuthResponse">
    <xsd:complexType>
    <xsd:sequence>
    <xsd:element maxOccurs="1" minOccurs="1" name="CRMUserAuthResult" nillable="true" type="ns1:CRMUserAuthResult"/>
    </xsd:sequence>
    </xsd:complexType>
    </xsd:element>
    </xsd:schema>
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://crminterface.customer.besttone.cn">
    <xsd:complexType name="CRMUserAuthResult">
    <xsd:sequence>
    <xsd:element minOccurs="0" name="errorDescription" nillable="true" type="xsd:string"/>
    <xsd:element minOccurs="0" name="extendField" nillable="true" type="xsd:string"/>
    <xsd:element minOccurs="0" name="result" type="xsd:int"/>
    </xsd:sequence>
    </xsd:complexType></xsd:schema>
      </wsdl:types>
      <wsdl:message name="CRMUserAuthResponse">
        <wsdl:part name="parameters" element="tns:CRMUserAuthResponse">
        </wsdl:part>
      </wsdl:message>
      <wsdl:message name="CRMUserAuthRequest">
        <wsdl:part name="parameters" element="tns:CRMUserAuth">
        </wsdl:part>  </wsdl:message>
      <wsdl:portType name="CRMForBTUCenterSoap">
        <wsdl:operation name="CRMUserAuth">
          <wsdl:input name="CRMUserAuthRequest" message="tns:CRMUserAuthRequest">
        </wsdl:input>
          <wsdl:output name="CRMUserAuthResponse" message="tns:CRMUserAuthResponse">
        </wsdl:output>
        </wsdl:operation>
      </wsdl:portType>  <wsdl:binding name="CRMForBTUCenterHttpBinding" type="tns:CRMForBTUCenterSoap">
        <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
        <wsdl:operation name="CRMUserAuth">
          <wsdlsoap:operation soapAction="http://CRMInterface.Customer.Besttone.cn/CRMUserAuth"/>
          <wsdl:input name="CRMUserAuthRequest">
            <wsdlsoap:body use="literal"/>
          </wsdl:input>
          <wsdl:output name="CRMUserAuthResponse">
            <wsdlsoap:body use="literal"/>      </wsdl:output>
        </wsdl:operation>
      </wsdl:binding>
      <wsdl:service name="CRMForBTUCenter">
        <wsdl:port name="CRMForBTUCenterHttpPort" binding="tns:CRMForBTUCenterHttpBinding">
          <wsdlsoap:address location="http://localhost:8088//services/CRMForBTUCenter"/>
        </wsdl:port>
      </wsdl:service>
    </wsdl:definitions>
    我的测试地址是:http://123.160.160.39/services/CRMForBTUCenter?wsdl
      

  2.   

    我这边用的是xfire+spring的方式开发的webservice