You need to sign in to do that
Don't have an account?
dotneteric
Any help is greatly appreciated. Thanks!
Error: Failed to parse wsdl: Found more than one wsdl:binding. WSDL with multiple binding not su...
When I use the "Generate from WSDL" option then browse for my WSDL and click the "Parse WSDL" button, I get the following error:
Error: Failed to parse wsdl: Found more than one wsdl:binding. WSDL with multiple binding not supported
This is the only information I've been able to find on this error (about half way down the page):
So I tried removing the SOAP 1.2 binding, but then ran into errors when making a call to the generated code:
Web service callout failed: Unable to find apex schema info
Can anyone tell me what I need to do to get this working without modifying the web service code (not my code)? What can I remove from the WSDL to get it to work?
Here's the original WSDL without the 1.2 binding removed:
Code:
<—xml version="1.0" encoding="utf-8"–> <s0:definitions targetNamespace="http://www.company.com" xmlns:s0="http://schemas.xmlsoap.org/wsdl/" xmlns:s1="http://www.company.com" xmlns:s2="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:s3="http://schemas.xmlsoap.org/wsdl/soap12/"> <s0:types> <s:schema elementFormDefault="qualified" targetNamespace="http://www.company.com" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:tns="http://www.company.com" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> <s:element name="SearchCustomerFromBureau"> <s:complexType> <s:sequence> <s:element name="searchCustomerFromBureauRequest" nillable="true" type="tns:SearchCustomerFromBureauRequest"/> </s:sequence> </s:complexType> </s:element> <s:complexType name="SearchCustomerFromBureauRequest"> <s:sequence> <s:element maxOccurs="1" minOccurs="1" name="businessLine" nillable="true" type="s:string"/> <s:element maxOccurs="1" minOccurs="1" name="countryCode" nillable="true" type="s:string"/> <s:element maxOccurs="1" minOccurs="1" name="languageCode" nillable="true" type="s:string"/> <s:element maxOccurs="1" minOccurs="0" name="dealerCode" type="s:string"/> <s:element maxOccurs="1" minOccurs="0" name="originationCountryID" type="s:int"/> <s:element maxOccurs="1" minOccurs="0" name="lesseeTypeCode" type="s:string"/> <s:element maxOccurs="1" minOccurs="0" name="applicationNumber" type="s:string"/> <s:element maxOccurs="1" minOccurs="0" name="registrationNumber" type="s:string"/> <s:element maxOccurs="1" minOccurs="0" name="zipCode" type="s:string"/> <s:element maxOccurs="1" minOccurs="0" name="ownerDateOfBirth" type="s:date"/> <s:element maxOccurs="1" minOccurs="0" name="lesseeName" type="s:string"/> <s:element maxOccurs="1" minOccurs="0" name="maidenName" type="s:string"/> <s:element maxOccurs="1" minOccurs="0" name="creditReformNumber" type="s:string"/> <s:element maxOccurs="1" minOccurs="0" name="phoneAreaCode" type="s:string"/> <s:element maxOccurs="1" minOccurs="0" name="phoneNumber" type="s:string"/> <s:element maxOccurs="1" minOccurs="0" name="ownerLastName" type="s:string"/> <s:element maxOccurs="1" minOccurs="0" name="city" type="s:string"/> <s:element maxOccurs="1" minOccurs="0" name="gender"> <s:simpleType> <s:restriction base="s:string"> <s:enumeration value="Male"/> <s:enumeration value="Female"/> </s:restriction> </s:simpleType> </s:element> <s:element maxOccurs="1" minOccurs="0" name="maritalStatusCode"> <s:simpleType> <s:restriction base="s:string"> <s:enumeration value="Divorced"/> <s:enumeration value="Married"/> <s:enumeration value="Separated"/> <s:enumeration value="Single"/> <s:enumeration value="WidowedOrWidower"/> <s:enumeration value="Other"/> </s:restriction> </s:simpleType> </s:element> <s:element maxOccurs="1" minOccurs="1" name="maxReturnRows" type="s:int"/> <s:element maxOccurs="1" minOccurs="1" name="CCIAAprovince"> <s:simpleType> <s:restriction base="s:string"> <s:length value="2"/> </s:restriction> </s:simpleType> </s:element> <s:element maxOccurs="1" minOccurs="1" name="CCIAAnumber"> <s:simpleType> <s:restriction base="s:string"> <s:length value="10"/> </s:restriction> </s:simpleType> </s:element> </s:sequence> </s:complexType> <s:element name="SearchCustomerFromBureauResponse"> <s:complexType> <s:sequence> <s:element maxOccurs="1" minOccurs="0" name="bureauCustomerSearchResponse" type="tns:BureauCustomerSearchResponse"/> </s:sequence> </s:complexType> </s:element> <s:complexType name="BureauCustomerSearchResponse"> <s:sequence> <s:element maxOccurs="unbounded" minOccurs="0" name="customerSearchList" nillable="true" type="tns:BureauCustomerSearch"/> <s:element maxOccurs="1" minOccurs="0" name="errorList" nillable="true" type="tns:ErrorList"/> </s:sequence> </s:complexType> <s:complexType name="BureauCustomerSearch"> <s:sequence> <s:element maxOccurs="1" minOccurs="0" name="address1" type="s:string"/> <s:element maxOccurs="1" minOccurs="1" name="businessStartDate" type="s:date"/> <s:element minOccurs="0" name="businessTypeCode" type="s:string"/> <s:element maxOccurs="1" minOccurs="0" name="cciaaNumber" type="s:string"/> <s:element maxOccurs="1" minOccurs="0" name="cciaaProvince" type="s:string"/> <s:element maxOccurs="1" minOccurs="0" name="city" type="s:string"/> <s:element maxOccurs="1" minOccurs="0" name="companyRegistrationNumber" type="s:string"/> <s:element maxOccurs="1" minOccurs="1" name="countryID" type="s:int"/> <!--<s:element name="addressID" type="s:int" minOccurs="0" maxOccurs="1"/>--> <s:element maxOccurs="1" minOccurs="0" name="creditReform" type="s:string"/> <s:element maxOccurs="1" minOccurs="0" name="dealerCode" type="s:string"/> <s:element maxOccurs="1" minOccurs="0" name="dealerName" type="s:string"/> <s:element maxOccurs="1" minOccurs="0" name="dealerSegment" type="s:string"/> <s:element maxOccurs="1" minOccurs="0" name="bureauNumber" type="s:string"/> <s:element maxOccurs="1" minOccurs="0" name="bureauType" type="s:string"/> <s:element maxOccurs="1" minOccurs="0" name="portfolioDealerCode" type="s:string"/> <s:element maxOccurs="1" minOccurs="0" name="lesseeName" type="s:string"/> <s:element maxOccurs="1" minOccurs="0" name="managerFirstName" type="s:string"/> <s:element minOccurs="0" name="managerSurName" type="s:string"/> <s:element maxOccurs="1" minOccurs="1" name="numberOfBureausToSearch" type="s:int"/> <s:element maxOccurs="1" minOccurs="0" name="previousLesseeName" type="s:string"/> <s:element maxOccurs="1" minOccurs="0" name="province" type="s:string"/> <s:element maxOccurs="1" minOccurs="0" name="sicDescription" type="s:string"/> <s:element maxOccurs="1" minOccurs="0" name="statusCode" type="s:string"/> <s:element maxOccurs="1" minOccurs="0" name="streetNumber" type="s:string"/> <s:element maxOccurs="1" minOccurs="0" name="vendorProgramCode" type="s:string"/> <s:element maxOccurs="1" minOccurs="0" name="zipCode" type="s:string"/> </s:sequence> </s:complexType> <s:complexType name="ErrorList"> <s:sequence> <s:element maxOccurs="unbounded" minOccurs="0" name="error" type="tns:Error"/> </s:sequence> </s:complexType> <s:complexType name="Error"> <s:sequence> <s:element maxOccurs="1" minOccurs="0" name="code" type="s:string"> <s:annotation> <s:documentation>Error Code</s:documentation> </s:annotation> </s:element> <s:element maxOccurs="1" minOccurs="0" name="description" type="s:string"> <s:annotation> <s:documentation>Error Description</s:documentation> </s:annotation> </s:element> </s:sequence> </s:complexType> <s:element name="SearchCustomerFromOriginations"> <s:complexType> <s:sequence> <s:element name="searchCustomerFromOriginationsRequest" nillable="true" type="tns:SearchCustomerFromOriginationsRequest"/> </s:sequence> </s:complexType> </s:element> <s:complexType name="SearchCustomerFromOriginationsRequest"> <s:sequence> <s:element maxOccurs="1" minOccurs="1" name="businessLine" nillable="true" type="s:string"/> <s:element maxOccurs="1" minOccurs="1" name="countryCode" nillable="true" type="s:string"/> <s:element maxOccurs="1" minOccurs="1" name="languageCode" nillable="true" type="s:string"/> <s:element maxOccurs="1" minOccurs="0" name="dealerCode" type="s:string"/> <s:element maxOccurs="1" minOccurs="0" name="lesseeName" type="s:string"/> <s:element maxOccurs="1" minOccurs="0" name="registrationNumber" type="s:string"/> <s:element maxOccurs="1" minOccurs="0" name="vatNumber" type="s:string"/> <s:element maxOccurs="1" minOccurs="0" name="zipCode" type="s:string"/> <s:element maxOccurs="1" minOccurs="1" name="maxReturnRows" type="s:int"/> </s:sequence> </s:complexType> <s:element name="SearchCustomerFromOriginationsResponse"> <s:complexType> <s:sequence> <s:element maxOccurs="1" minOccurs="0" name="originationCustomerSearchResponse" type="tns:OriginationCustomerSearchResponse"/> </s:sequence> </s:complexType> </s:element> <s:complexType name="OriginationCustomerSearchResponse"> <s:sequence> <s:element maxOccurs="unbounded" minOccurs="0" name="customerSearchList" nillable="true" type="tns:OriginationCustomerSearch"/> <s:element maxOccurs="1" minOccurs="0" name="errorList" nillable="true" type="tns:ErrorList"/> </s:sequence> </s:complexType> <s:complexType name="OriginationCustomerSearch"> <s:sequence> <s:element maxOccurs="1" minOccurs="0" name="lesseeCode" type="s:string"/> <s:element maxOccurs="1" minOccurs="0" name="lesseeName" type="s:string"/> <s:element maxOccurs="1" minOccurs="0" name="companyRegistrationNumber" type="s:string"/> <s:element maxOccurs="1" minOccurs="0" name="addressID" type="s:int"/> <s:element name="mainAddress" type="tns:Address"/> <s:element maxOccurs="1" minOccurs="0" name="vatNumber" type="s:string"/> <s:element maxOccurs="1" minOccurs="0" name="undisclosedFlag" type="s:string"/> <s:element maxOccurs="1" minOccurs="0" name="phoneAreaCode" type="s:string"/> <s:element maxOccurs="1" minOccurs="0" name="phoneNumber" type="s:string"/> <s:element maxOccurs="1" minOccurs="0" name="creditReformNumber" type="s:string"/> </s:sequence> </s:complexType> <s:complexType name="Address"> <s:sequence> <s:element minOccurs="0" name="propertyName"> <s:simpleType> <s:restriction base="s:string"> <s:maxLength value="50"/> </s:restriction> </s:simpleType> </s:element> <s:element name="address1"> <s:simpleType> <s:restriction base="s:string"> <s:maxLength value="50"/> </s:restriction> </s:simpleType> </s:element> <s:element minOccurs="0" name="streetNumber"> <s:simpleType> <s:restriction base="s:string"> <s:maxLength value="6"/> </s:restriction> </s:simpleType> </s:element> <s:element minOccurs="0" name="address2"> <s:simpleType> <s:restriction base="s:string"> <s:maxLength value="50"/> </s:restriction> </s:simpleType> </s:element> <s:element name="city"> <s:simpleType> <s:restriction base="s:string"> <s:maxLength value="50"/> </s:restriction> </s:simpleType> </s:element> <s:element minOccurs="0" name="county"> <s:simpleType> <s:restriction base="s:string"> <s:maxLength value="36"/> </s:restriction> </s:simpleType> </s:element> <s:element name="zipCode"> <s:simpleType> <s:restriction base="s:string"> <s:maxLength value="9"/> </s:restriction> </s:simpleType> </s:element> <s:element name="countryID" type="s:int"/> <s:element name="countryDesc" type="s:string"/> </s:sequence> </s:complexType> </s:schema> </s0:types> <s0:message name="SearchCustomerFromBureauSoapIn"> <s0:part element="s1:SearchCustomerFromBureau" name="parameters"/> </s0:message> <s0:message name="SearchCustomerFromBureauSoapOut"> <s0:part element="s1:SearchCustomerFromBureauResponse" name="parameters"/> </s0:message> <s0:message name="SearchCustomerFromOriginationsSoapIn"> <s0:part element="s1:SearchCustomerFromOriginations" name="parameters"/> </s0:message> <s0:message name="SearchCustomerFromOriginationsSoapOut"> <s0:part element="s1:SearchCustomerFromOriginationsResponse" name="parameters"/> </s0:message> <s0:portType name="CustomerSoap"> <s0:operation name="SearchCustomerFromBureau"> <s0:input message="s1:SearchCustomerFromBureauSoapIn"/> <s0:output message="s1:SearchCustomerFromBureauSoapOut"/> </s0:operation> <s0:operation name="SearchCustomerFromOriginations"> <s0:input message="s1:SearchCustomerFromOriginationsSoapIn"/> <s0:output message="s1:SearchCustomerFromOriginationsSoapOut"/> </s0:operation> </s0:portType> <s0:binding name="CustomerSoap" type="s1:CustomerSoap"> <s2:binding transport="http://schemas.xmlsoap.org/soap/http"/> <s0:operation name="SearchCustomerFromBureau"> <s2:operation soapAction="http://www.company.com/SearchCustomerFromBureau" style="document"/> <s0:input> <s2:body use="literal"/> </s0:input> <s0:output> <s2:body use="literal"/> </s0:output> </s0:operation> <s0:operation name="SearchCustomerFromOriginations"> <s2:operation soapAction="http://www.company.com/SearchCustomerFromOriginations" style="document"/> <s0:input> <s2:body use="literal"/> </s0:input> <s0:output> <s2:body use="literal"/> </s0:output> </s0:operation> </s0:binding> <s0:binding name="CustomerSoap12" type="s1:CustomerSoap"> <s3:binding transport="http://schemas.xmlsoap.org/soap/http"/> <s0:operation name="SearchCustomerFromBureau"> <s3:operation soapAction="http://www.company.com/SearchCustomerFromBureau" style="document"/> <s0:input> <s3:body use="literal"/> </s0:input> <s0:output> <s3:body use="literal"/> </s0:output> </s0:operation> <s0:operation name="SearchCustomerFromOriginations"> <s3:operation soapAction="http://www.company.com/SearchCustomerFromOriginations" style="document"/> <s0:input> <s3:body use="literal"/> </s0:input> <s0:output> <s3:body use="literal"/> </s0:output> </s0:operation> </s0:binding> <s0:service name="Customer"> <s0:port binding="s1:CustomerSoap" name="CustomerSoap"> <s2:address location="http://location/esb/customer"/> </s0:port> </s0:service> </s0:definitions>
Any help is greatly appreciated. Thanks!
-Eric
Here's the Apex code that calls the code generated from the WSDL:
And here's the S-Control that calls that Apex code:
If you can replace simpleType restriction with xsd:string, this should work.
and then as cheenath suggested, removed simpleType restriction on the strings. So changed these
to this
Just an add on help,
wsdl2apex does not support SOAP 1.2
it would also help to remove all the 1.2 bindings and components from the wsdl and then parse it.
it helped me solve my issue.
Im also stuck with this error when parsing my wsdl file. Already removed the SOAP1.2 binding but not yet sure about removing simpleType restriction in my code. Tried removing it but it but the error there's still an error. Can you guys please help me out?
You can find the original code here: https://www.securecrmsite.com/Modules/System/API.asmx?WSDL
Below is my code after removing SOAP 1.2
<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions 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://api.securecrmsite.com/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:s1="http://microsoft.com/wsdl/types/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://api.securecrmsite.com/">
<wsdl:types>
<s:schema elementFormDefault="qualified" targetNamespace="http://api.securecrmsite.com/">
<s:import namespace="http://microsoft.com/wsdl/types/"/>
<s:element name="Process">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Credentials" type="tns:ApiCredentials"/>
<s:element minOccurs="0" maxOccurs="1" name="ProcessName" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="Parameters" type="tns:ArrayOfApiParams"/>
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="ApiCredentials">
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="CompanyKey" type="s:int"/>
<s:element minOccurs="0" maxOccurs="1" name="APIKey" type="s:string"/>
</s:sequence>
</s:complexType>
<s:complexType name="ArrayOfApiParams">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="ApiParams" nillable="true" type="tns:ApiParams"/>
</s:sequence>
</s:complexType>
<s:complexType name="ApiParams">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Name" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="Value" type="s:string"/>
</s:sequence>
</s:complexType>
<s:element name="ProcessResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ProcessResult" type="tns:ApiResponse"/>
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="ApiResponse">
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="RequestID" type="s:int"/>
<s:element minOccurs="1" maxOccurs="1" name="PrimaryKeyID" type="s:int"/>
<s:element minOccurs="1" maxOccurs="1" name="Success" type="s:boolean"/>
<s:element minOccurs="0" maxOccurs="1" name="Message" type="s:string"/>
<s:element minOccurs="1" maxOccurs="1" name="Records" type="s:int"/>
<s:element minOccurs="0" maxOccurs="1" name="ProcessData">
<s:complexType>
<s:sequence>
<s:element ref="s:schema"/>
<s:any/>
</s:sequence>
</s:complexType>
</s:element>
<s:element minOccurs="0" maxOccurs="1" name="XmlRequest" type="s:string"/>
</s:sequence>
</s:complexType>
</s:schema>
<s:schema elementFormDefault="qualified" targetNamespace="http://microsoft.com/wsdl/types/">
<s:simpleType name="guid">
<s:restriction base="s:string">
<s:pattern value="[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}"/>
</s:restriction>
</s:simpleType>
</s:schema>
</wsdl:types>
<wsdl:message name="ProcessSoapIn">
<wsdl:part name="parameters" element="tns:Process"/>
</wsdl:message>
<wsdl:message name="ProcessSoapOut">
<wsdl:part name="parameters" element="tns:ProcessResponse"/>
</wsdl:message>
<wsdl:portType name="APIEngineSoap">
<wsdl:operation name="Process">
<wsdl:input message="tns:ProcessSoapIn"/>
<wsdl:output message="tns:ProcessSoapOut"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="APIEngineSoap" type="tns:APIEngineSoap">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="Process">
<soap:operation soapAction="http://api.securecrmsite.com/Process" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="APIEngine">
<wsdl:port name="APIEngineSoap" binding="tns:APIEngineSoap">
<soap:address location="http://www.securecrmsite.com/Modules/System/API.asmx"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
Thank you very much in advance!