delphi import 服务端提供的WSDL后,生成function requestCreate(const parameters: requestCreate): requestCreateResponse; stdcall;
运行后,提示requestCreate参数没有定义,不知道生成的这种方法怎么用?
请各位大侠帮帮忙!小弟急死了...................................
运行后,提示requestCreate参数没有定义,不知道生成的这种方法怎么用?
请各位大侠帮帮忙!小弟急死了...................................
没有具体的requestCreate的参数的定义!不知道这些参数的定义需要怎么搞?
内容是xml报文。
可能对方定义的wsdl中自定义参数部分有误,导致无法生成对应的参数类
- <wsdl:definitions xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://alcatel.pl/soserver/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xs="http://www.w3.org/2001/XMLSchema" name="SOServer" targetNamespace="http://alcatel.pl/soserver/" xmlns="http://alcatel.pl/soserver/">
- <wsdl:types>
- <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://alcatel.pl/soserver/" targetNamespace="http://alcatel.pl/soserver/" elementFormDefault="qualified" attributeFormDefault="unqualified" xmlns="http://alcatel.pl/soserver/">
<xs:include schemaLocation="core.xsd" />
</xs:schema>
</wsdl:types>
- <wsdl:message name="requestModifyConfigResponse">
<wsdl:part element="tns:requestModifyConfigResponse" name="parameters" />
</wsdl:message>
- <wsdl:message name="requestGetResponse">
<wsdl:part element="tns:requestGetResponse" name="parameters" />
</wsdl:message>
- <wsdl:message name="requestCreateResponse">
<wsdl:part element="tns:requestCreateResponse" name="parameters" />
</wsdl:message>
- <wsdl:message name="requestConfigureRequest">
<wsdl:part element="tns:requestConfigure" name="parameters" />
</wsdl:message>
- <wsdl:message name="requestDeleteRequest">
<wsdl:part element="tns:requestDelete" name="parameters" />
</wsdl:message>
- <wsdl:message name="requestUnConfigureResponse">
<wsdl:part element="tns:requestUnConfigureResponse" name="parameters" />
</wsdl:message>
- <wsdl:message name="requestUnConfigureRequest">
<wsdl:part element="tns:requestUnConfigure" name="parameters" />
</wsdl:message>
- <wsdl:message name="ErrorMessageType">
<wsdl:part element="tns:fault" name="fault" />
</wsdl:message>
- <wsdl:message name="requestConfigureResponse">
<wsdl:part element="tns:requestConfigureResponse" name="parameters" />
</wsdl:message>
- <wsdl:message name="requestModifyResponse">
<wsdl:part element="tns:requestModifyResponse" name="parameters" />
</wsdl:message>
- <wsdl:message name="requestCreateRequest">
<wsdl:part element="tns:requestCreate" name="parameters" />
</wsdl:message>
- <wsdl:message name="requestDeleteResponse">
<wsdl:part element="tns:requestDeleteResponse" name="parameters" />
</wsdl:message>
- <wsdl:message name="requestModifyRequest">
<wsdl:part element="tns:requestModify" name="parameters" />
</wsdl:message>
- <wsdl:message name="requestModifyConfigRequest">
<wsdl:part element="tns:requestModifyConfig" name="parameters" />
</wsdl:message>
- <wsdl:message name="requestGetRequest">
<wsdl:part element="tns:requestGet" name="parameters" />
</wsdl:message>
- <wsdl:portType name="SOServer">
- <wsdl:operation name="requestCreate">
<wsdl:input message="tns:requestCreateRequest" name="requestCreateRequest" />
<wsdl:output message="tns:requestCreateResponse" name="requestCreateResponse" />
<wsdl:fault message="tns:ErrorMessageType" name="ErrorMessageType" />
</wsdl:operation>
- <wsdl:operation name="requestDelete">
<wsdl:input message="tns:requestDeleteRequest" name="requestDeleteRequest" />
<wsdl:output message="tns:requestDeleteResponse" name="requestDeleteResponse" />
<wsdl:fault message="tns:ErrorMessageType" name="ErrorMessageType" />
</wsdl:operation>
- <wsdl:operation name="requestModify">
<wsdl:input message="tns:requestModifyRequest" name="requestModifyRequest" />
<wsdl:output message="tns:requestModifyResponse" name="requestModifyResponse" />
<wsdl:fault message="tns:ErrorMessageType" name="ErrorMessageType" />
</wsdl:operation>
- <wsdl:operation name="requestModifyConfig">
<wsdl:input message="tns:requestModifyConfigRequest" name="requestModifyConfigRequest" />
<wsdl:output message="tns:requestModifyConfigResponse" name="requestModifyConfigResponse" />
<wsdl:fault message="tns:ErrorMessageType" name="ErrorMessageType" />
</wsdl:operation>
- <wsdl:operation name="requestGet">
<wsdl:input message="tns:requestGetRequest" name="requestGetRequest" />
<wsdl:output message="tns:requestGetResponse" name="requestGetResponse" />
<wsdl:fault message="tns:ErrorMessageType" name="ErrorMessageType" />
</wsdl:operation>
<wsdl:input message="tns:requestConfigureRequest" name="requestConfigureRequest" />
<wsdl:output message="tns:requestConfigureResponse" name="requestConfigureResponse" />
<wsdl:fault message="tns:ErrorMessageType" name="ErrorMessageType" />
</wsdl:operation>
- <wsdl:operation name="requestUnConfigure">
<wsdl:input message="tns:requestUnConfigureRequest" name="requestUnConfigureRequest" />
<wsdl:output message="tns:requestUnConfigureResponse" name="requestUnConfigureResponse" />
<wsdl:fault message="tns:ErrorMessageType" name="ErrorMessageType" />
</wsdl:operation>
</wsdl:portType>
- <wsdl:binding name="SOServerSOAP" type="tns:SOServer">
<wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
- <wsdl:operation name="requestCreate">
<wsdlsoap:operation soapAction="" />
- <wsdl:input name="requestCreateRequest">
<wsdlsoap:body use="literal" />
</wsdl:input>
- <wsdl:output name="requestCreateResponse">
<wsdlsoap:body use="literal" />
</wsdl:output>
- <wsdl:fault name="ErrorMessageType">
<wsdlsoap:fault name="ErrorMessageType" use="literal" />
</wsdl:fault>
</wsdl:operation>
- <wsdl:operation name="requestDelete">
<wsdlsoap:operation soapAction="" />
- <wsdl:input name="requestDeleteRequest">
<wsdlsoap:body use="literal" />
</wsdl:input>
- <wsdl:output name="requestDeleteResponse">
<wsdlsoap:body use="literal" />
</wsdl:output>
- <wsdl:fault name="ErrorMessageType">
<wsdlsoap:fault name="ErrorMessageType" use="literal" />
</wsdl:fault>
</wsdl:operation>
- <wsdl:operation name="requestModify">
<wsdlsoap:operation soapAction="" />
- <wsdl:input name="requestModifyRequest">
<wsdlsoap:body use="literal" />
</wsdl:input>
- <wsdl:output name="requestModifyResponse">
<wsdlsoap:body use="literal" />
</wsdl:output>
- <wsdl:fault name="ErrorMessageType">
<wsdlsoap:fault name="ErrorMessageType" use="literal" />
</wsdl:fault>
</wsdl:operation>
- <wsdl:operation name="requestModifyConfig">
<wsdlsoap:operation soapAction="" />
- <wsdl:input name="requestModifyConfigRequest">
<wsdlsoap:body use="literal" />
</wsdl:input>
- <wsdl:output name="requestModifyConfigResponse">
<wsdlsoap:body use="literal" />
</wsdl:output>
- <wsdl:fault name="ErrorMessageType">
<wsdlsoap:fault name="ErrorMessageType" use="literal" />
</wsdl:fault>
</wsdl:operation>
- <wsdl:operation name="requestGet">
<wsdlsoap:operation soapAction="" />
- <wsdl:input name="requestGetRequest">
<wsdlsoap:body use="literal" />
</wsdl:input>
- <wsdl:output name="requestGetResponse">
<wsdlsoap:body use="literal" />
</wsdl:output>
- <wsdl:fault name="ErrorMessageType">
<wsdlsoap:fault name="ErrorMessageType" use="literal" />
</wsdl:fault>
</wsdl:operation>
- <wsdl:operation name="requestConfigure">
<wsdlsoap:operation soapAction="" />
- <wsdl:input name="requestConfigureRequest">
<wsdlsoap:body use="literal" />
</wsdl:input>
- <wsdl:output name="requestConfigureResponse">
<wsdlsoap:body use="literal" />
</wsdl:output>
- <wsdl:fault name="ErrorMessageType">
<wsdlsoap:fault name="ErrorMessageType" use="literal" />
</wsdl:fault>
</wsdl:operation>
- <wsdl:operation name="requestUnConfigure">
<wsdlsoap:operation soapAction="" />
- <wsdl:input name="requestUnConfigureRequest">
<wsdlsoap:body use="literal" />
</wsdl:input>
- <wsdl:output name="requestUnConfigureResponse">
<wsdlsoap:body use="literal" />
</wsdl:output>
- <wsdl:fault name="ErrorMessageType">
<wsdlsoap:fault name="ErrorMessageType" use="literal" />
</wsdl:fault>
</wsdl:operation>
</wsdl:binding>
- <wsdl:service name="SOServer">
- <wsdl:port binding="tns:SOServerSOAP" name="SOServerSOAP">
<wsdlsoap:address location="http://localhost:8080/axis/services/SOServerSOAP" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
首先,你要了解1个问题,多方也是用delphi做的吗,如果是,好极了,你只要把它的类定义文件源码要来就可以了,具体请参照Demos\ebServices\OAPAttachments\choService.bpg
如果不是用delphi写的,那你就要研究core.xsd的定义,看看是如何定义的,仿照上面的例子从TRemotable继承下来,自己做xml的解析,不过看你这个配置文件,好像定义了好几个类型
// The following types, referred to in the WSDL document are not being represented
// in this file. They are either aliases[@] of other types represented or were referred
// to but never[!] declared in the document. The types from the latter category
// typically map to predefined/known XML or Borland types; however, they could also
// indicate incorrect WSDL documents that failed to declare or import a schema type.
// ************************************************************************ //
// !:requestCreate - "http://alcatel.pl/soserver/"
// !:requestCreateResponse - "http://alcatel.pl/soserver/"
// !:fault - "http://alcatel.pl/soserver/"
// !:requestDelete - "http://alcatel.pl/soserver/"
// !:requestDeleteResponse - "http://alcatel.pl/soserver/"
// !:requestModify - "http://alcatel.pl/soserver/"
// !:requestModifyResponse - "http://alcatel.pl/soserver/"
// !:requestModifyConfig - "http://alcatel.pl/soserver/"
// !:requestModifyConfigResponse - "http://alcatel.pl/soserver/"
// !:requestGet - "http://alcatel.pl/soserver/"
// !:requestGetResponse - "http://alcatel.pl/soserver/"
// !:requestConfigure - "http://alcatel.pl/soserver/"
// !:requestConfigureResponse - "http://alcatel.pl/soserver/"
// !:requestUnConfigure - "http://alcatel.pl/soserver/"
// !:requestUnConfigureResponse - "http://alcatel.pl/soserver/"
先保证你能访问http://alcatel.pl/soserver/这个网址
如果没法保证,你得像LS说的,从TRemotable继承,手动写这些类型定义
<xs:include schemaLocation="core.xsd" />
主要是找到上面这个文件core.xsd,这个对方是应该会提供给你的,找到定义文件在翻译成delphi可以识别的类型就可以了