2015-06-27 2 views
0

Я новичок в взаимодействии с клиентом php с веб-сервисом .NET. Я осмотрелся и узнал о сообщениях, подобных приведенным ниже, но ответа на мой вопрос нет..NET web service и php client

How to make a PHP SOAP client and store the result xml in php variables

http://www.php.net/manual/en/soapclient.setsoapheaders.php

Consume a .Net web service using PHP

Клиент PHP SOAP (для запроса и получения ответа) необходим для .NET веб-службы (http://localhost:8080/someexample/myservice.wsdl). Ввода/запрос будет выглядеть следующим образом:

<input> 
    <the_input name="secondyear"> 
     <authen> 
     <Teacher> 
     <teacherid>MrX</teacherid> 
     <password>t_pass</password> 
     </Teacher> 
     <Student> 
     <studentid>kids</studentid> 
     <password>s_pass</password> 
     </Student> 
     </authen> 
    <parameters> 
     <parameter name="maths" value="123" /> 
     <parameter name="physics" value="abc" /> 
     <parameter name="sports" value="def" /> 
    </parameters> 
    </the_input> 
</input> 

Вот что я получил, но не работает, и я не уверен, что я нахожусь на правильном пути:

<?php 
require_once("lib/nusoap.php"); 
$url="http://example.com/someexample/myservice.wsdl"; 
$client = new SoapClient($url); 

$teacherid='MrX'; 
$tpassword='t_pass'; 
$studentid='kids'; 
$spassword='s_pass'; 
$ns = "http://example.com/"; 

//Body of the Soap Header. 
$headerbody = array ('Teacher' => array('teacherid' => $teacherid, 
             'password' => $tpassword), 
         'Student' => array('stendentid' => $studentid, 
             'password' => $spassword)); 
//Create Soap Header. 
$header = new SOAPHeader($ns, 'Authen', $headerbody); 

//set the Headers of Soap Client. 
$headerparam=$client->__setSoapHeaders($header); 

$name ='secondyear'; 
$service_name = array('the_input'=>$name); 

$result =$client->__SoapCall($service_name,$headerparam) 
print_r ($result); 
?> 

я прочитал где-то, чтобы аутентифицировать к веб-службе, нужно поместить параметр проверки подлинности в заголовок php, так что что происходит с телом php или нужно? это параметры? Параметр имеет формат имени и значения, как это сделать в php-массиве? имеется ли какой-либо соответствующий пример? как уже упоминалось, я сделал свое исследование и не понял, как решить эту проблему.

ответ

0

хорошо я понял себя, и я размещаю ответ здесь, в случае, если он помогает кому-то иметь ту же проблему. я просто создать XML varible:

$myxml ='<the_input name="secondyear"> 
    <authen> 
    <Teacher> 
    <teacherid>MrX</teacherid> 
    <password>t_pass</password> 
    </Teacher> 
    <Student> 
    <studentid>kids</studentid> 
    <password>s_pass</password> 
    </Student> 
    </authen> 
<parameters> 
    <parameter name="maths" value="123" /> 
    <parameter name="physics" value="abc" /> 
    <parameter name="sports" value="def" /> 
</parameters> 
</the_input>' 

затем назвал его в качестве параметра (в функции мыла вызова):

<?php 
require_once("lib/nusoap.php"); 
$url="http://example.com/someexample/myservice.wsdl"; 
$client = new SoapClient($url); 

$result =$client->input(array(the_input=>$myxml)); 
print_r ($result); 
?> 

Вола, был подключен к веб-сервису. Когда проблема решена, она выглядит очень легко.