我正在尝试使用一个简单的wsdl文件并拨打肥皂电话,但对于我的生活,我无法让它工作。
这是wsdl文件:
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="urn:gnHPD_Staging_Table_Submit_Generic" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:s="urn:gnHPD_Staging_Table_Submit_Generic" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<wsdl:types>
<xsd:schema elementFormDefault="qualified" targetNamespace="urn:gnHPD_Staging_Table_Submit_Generic">
<xsd:element name="Submit" type="s:InputMapping"/>
<xsd:complexType name="InputMapping">
<xsd:sequence>
<xsd:element name="Assigned_To_Group" type="xsd:string"/>
<xsd:element name="AutoPush" type="s:AutoPushType"/>
<xsd:element name="Case_Type" type="s:Case_TypeType"/>
<xsd:element name="Category" type="xsd:string"/>
<xsd:element name="Description" type="xsd:string"/>
<xsd:element name="Details" type="xsd:string"/>
<xsd:element name="Entry_Number" type="xsd:string"/>
<xsd:element name="Integration_Application" type="xsd:string"/>
<xsd:element name="Item" type="xsd:string"/>
<xsd:element name="Priority" type="s:PriorityType"/>
<xsd:element name="Source" type="s:SourceType"/>
<xsd:element name="Submitter_UNIX" type="xsd:string"/>
<xsd:element name="Summary" type="xsd:string"/>
<xsd:element name="Type" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:simpleType name="AutoPushType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Auto Push"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="Case_TypeType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Incident"/>
<xsd:enumeration value="Question"/>
<xsd:enumeration value="Request"/>
<xsd:enumeration value="Problem"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="PriorityType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="4"/>
<xsd:enumeration value="3"/>
<xsd:enumeration value="2"/>
<xsd:enumeration value="1"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="SourceType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Phone"/>
<xsd:enumeration value="Requester"/>
<xsd:enumeration value="Email"/>
<xsd:enumeration value="Web"/>
<xsd:enumeration value="NMP"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:element name="SubmitResponse" type="s:OutputMapping"/>
<xsd:complexType name="OutputMapping">
<xsd:sequence>
<xsd:element name="StagingTable_ID" type="xsd:string"/>
<xsd:element name="HelpDesk_ID" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="AuthenticationInfo" type="s:AuthenticationInfo"/>
<xsd:complexType name="AuthenticationInfo">
<xsd:sequence>
<xsd:element name="userName" type="xsd:string"/>
<xsd:element name="password" type="xsd:string"/>
<xsd:element minOccurs="0" name="authentication" type="xsd:string"/>
<xsd:element minOccurs="0" name="locale" type="xsd:string"/>
<xsd:element minOccurs="0" name="timeZone" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
</wsdl:types>
<wsdl:message name="SubmitSoapOut">
<wsdl:part element="s:SubmitResponse" name="parameters"/>
</wsdl:message>
<wsdl:message name="SubmitSoapIn">
<wsdl:part element="s:Submit" name="parameters"/>
</wsdl:message>
<wsdl:message name="ARAuthenticate">
<wsdl:part element="s:AuthenticationInfo" name="parameters"/>
</wsdl:message>
<wsdl:portType name="gnHPD_Staging_Table_Submit_GenericPortType">
<wsdl:operation name="Submit">
<wsdl:input message="s:SubmitSoapIn"/>
<wsdl:output message="s:SubmitSoapOut"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="gnHPD_Staging_Table_Submit_GenericSoapBinding" type="s:gnHPD_Staging_Table_Submit_GenericPortType">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="Submit">
<soap:operation soapAction="urn:gnHPD_Staging_Table_Submit_Generic/Submit" style="document"/>
<wsdl:input>
<soap:header message="s:ARAuthenticate" part="parameters" use="literal"></soap:header>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="gnHPD_Staging_Table_Submit_GenericService">
<wsdl:documentation>Generic Submit for HD</wsdl:documentation>
<wsdl:port binding="s:gnHPD_Staging_Table_Submit_GenericSoapBinding" name="gnHPD_Staging_Table_Submit_GenericSoap">
<soap:address location="http://servename:1234/midtier/services/ARService?server=servername&webService=gnHPD_Staging_Table_Submit_Generic"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
这是我的PHP代码:
$params = array(
"Submitter_UNIX"=>'myunix',
"Source"=>'Web',
"Summary"=>'Test1',
"Description"=>'Test1',
"Category"=>'test services',
"Type"=>'test s',
"Item"=>'Problem',
"Assigned_To_Group"=>'test s',
"Case_Type"=>'Problem',
"Priority"=>'4',
"AutoPush" => 'Auto Push',
"Details"=>'Test Details',
"Entry_Number"=>'',
"Integration_Application"=>'MyDev'
);
$client = new SoapClient('http://servername:1234/midtier/WSDL/servername/gnHPD_Staging_Table_Submit_Generic',array('trace' => 1 ));
$result = $client->Submit($params);
但我不知道如何为soap调用设置身份验证标头。非常感谢任何帮助。
答案 0 :(得分:2)
PHP manual page for SoapClient上有一些很好的身份验证示例(在'options'参数信息下)。例如,如果您需要进行基本的HTTP身份验证,那么您可以编写如下内容:
$url = "http://servername:1234/midtier/WSDL/servername/gnHPD_Staging_Table_Submit_Generic";
$params = array(
'trace' => 1,
'login' => "some_name",
'password' => "some_password"
);
$client = new SoapClient($url, $params);
如果您无法通过其中一种标准机制进行身份验证,那么也许可以通过该服务来完成(没有一些文档很难说)。有一个AuthenticationInfo条目可以用于此目的 - 在这种情况下,您可以执行以下操作:
$params = array('userName' => 'username', 'password' => 'password');
$client->AuthenticationInfo($params);
答案 1 :(得分:1)
您的WSDL文件是否也受密码保护?