Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: SOAP PHP - как правильно сформировать xml
 
 автор: maxfade   (08.08.2012 в 18:00)   письмо автору
 
 

Добрый день.

Уже несколько дней бьюсь над проблемой формирования xml заданной конструкции в стандартном клиенте SOAP на PHP.

Необходимо передавать вот такую структуру:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <soap:Body>
           <GetContent xmlns="http://xxx.xxx.ru/">
                    <request>
                           <PartnerId>1234567890</PartnerId>
                           <ProductId>1234</ProductId>
                            <CustomerIp>192.168.0.1</CustomerIp>
                     </request>
             </GetContent>
      </soap:Body>
</soap:Envelope>



Делаю так:


$client = new SoapClient("http://xxx.xxx.xxx.ru/Services/xxx.asmx?wsdl", Array("exceptions"=>0,"trace" => 1, "encoding" => "utf-8","cache_wsdl" => WSDL_CACHE_NONE, "soap_version" => SOAP_1_2));

$res = $client->GetContent(new SoapParam((string)'1234567890', "PartnerId"),
                      new SoapParam((int)1234, "ProductId"),
                      new SoapParam((string)'192.168.0.1', "CustomerIp"));

]



Подскажите, как мне заставить клиента SOAP передавать xml в нужной мне структуре...

Заранее спасибо.

Но получается вот так, что не верно:
<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://xxx.xxx.ru/"><env:Body><ns1:GetContent/><ProductId>1234</ProductId><CustomerIp>192.168.0.1</CustomerIp></env:Body></env:Envelope>

  Ответить  
 
 автор: maxfade   (10.08.2012 в 11:12)   письмо автору
 
   для: maxfade   (08.08.2012 в 18:00)
 

Нашел решение сам, может кому пригодиться :)


<?php
$client 
= new SoapClient("http://xxx.xxx.xxx.ru/Services/FreeStreaming.asmx?wsdl", Array("exceptions"=>0,"trace" => 1"encoding" => "utf-8","cache_wsdl" => WSDL_CACHE_NONE"soap_version" => SOAP_1_2));
                        
    
$client->__soapCall('GetContent',
    array(new 
SoapVar('<GetContent xmlns="http://partner.muz.ru/"><request><PartnerId>1234567890</PartnerId><ProductId>1234</ProductId><CustomerIp>192.168.1.0</CustomerIp></request></GetContent>'XSD_ANYXML)),
    array(
'soapaction' => 'http://xxx.xxx.xxx.ru/Services/FreeStreaming.asmx?wsdl'));  
?>


Вставляем в SoapVar тело XML с нужной структурой и параметрами, также важно указать XSD_ANYXML.

  Ответить  
 
 автор: Zilog   (16.09.2012 в 05:37)   письмо автору
 
   для: maxfade   (10.08.2012 в 11:12)
 

Спасибо, камрад, оч помог.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования