установка мыльных заголовков при использовании wsdl в php - PullRequest
1 голос
/ 09 декабря 2010

Я пытаюсь использовать простой файл 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&amp;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);  

Но я не знаю, как установить заголовки аутентификации для мыльного вызова. любая помощь очень ценится.

Ответы [ 2 ]

2 голосов
/ 09 декабря 2010

На странице справки по PHP для SoapClient есть несколько хороших примеров аутентификации (в разделе информации о параметрах). Например, если вам нужно выполнить базовую 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 голос
/ 13 июня 2012

Ваш файл WSDL также защищен паролем?

См. https://bugs.php.net/bug.php?id=27777

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...