Einstellung soap-Header bei der Verwendung von wsdl-Datei in php
Ich versuche, ein einfaches wsdl-Datei und machen Sie einen soap-Aufruf, aber für das Leben von mir ich kann nicht ankommen es zu wirken.
Hier ist die wsdl-Datei:
<?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>
Hier ist mein php code:
$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);
Aber ich weiß nicht, wie die Authentisierungs-Header für die soap-Aufruf. jede Hilfe wird sehr geschätzt.
InformationsquelleAutor Sergiu Z | 2010-12-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es einige gute Authentifizierung Beispiele auf der PHP-Handbuch-Seite für SoapClient (unter 'Optionen' - parameter info). Zum Beispiel, wenn Sie tun müssen, grundlegende HTTP-Authentifizierung, dann würden Sie schreiben etwas wie dieses:
Wenn Sie nicht in der Lage, sich zu authentifizieren, die über eine der standard-Mechanismen, dann vielleicht ist es getan werden kann, durch den service (ohne Dokumentation, es ist schwer zu sagen). Es gibt eine AuthenticationInfo Eintrag, können diesem Zweck dienen - in dem Fall würden Sie so etwas tun:
Hmm.. die beste Sache zu tun, in diesem Fall wäre zu Lesen rund um das Thema. Manchmal kann man sich über den service; ich habe Hinzugefügt, um meine ursprüngliche Antwort mit einer möglichen Lösung für diesen Fall. Was macht Sie denken, müssen Sie die Header - bekommst du eine Fehlermeldung vom service?
Das scheint ein Fehler auf der server-Seite; es bedeutet nicht unbedingt, dass es etwas falsch mit Ihrem Authentifizierungs-Anfrage. Vielleicht könnte man Kontakt mit dem service-provider und Fragen, ob Sie aufspüren kann, wo die exception wird geworfen? Vielleicht ist es damit rechnen, dass etwas in Ihrem Header fehlt, wie die 'Authentifizierung' - Feld?
InformationsquelleAutor Craig
Ist Ihre WSDL-Datei auch ein Passwort geschützt?
Sehen https://bugs.php.net/bug.php?id=27777
InformationsquelleAutor Ridgway