blackseabreathe
@blackseabreathe
brackets

Почему не удается получить ответ от сервера soap wsdl php Curl?

Сам не дружу пока что с soap wsdl, хоть и прочитал кучу статей про них, но никак не укладываются в голове базовые основы.
В интеренете нашел пример обращения к серверу через Curl и подставил свои логин, пароль и wsdl:
<?php
	
	$query = '<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Header/>
<soap:Body>
<m:Calc xmlns:m="http://www.cargo3.ru">
<m:login>test</m:login>     //login
<m:password>2016</m:password>       //password
<m:data>
<m:Key>Destinations</m:Key>
<m:List>
<m:Key>Destination</m:Key>
<m:Fields>
<m:Key>SenderGeography</m:Key>
<m:Value>cf862f56-442d-11dc-9497-0015170f8c09</m:Value>
<m:ValueType>string</m:ValueType>
</m:Fields>
<m:Fields>
<m:Key>RecipientGeography</m:Key>
<m:Value>cf862f56-442d-11dc-9497-0015170f8c09</m:Value>
<m:ValueType>string</m:ValueType>
</m:Fields>
<m:Fields>
<m:Key>TypeOfCargo</m:Key>
<m:Value>4aab1fc6-fc2b-473a-8728-58bcd4ff79ba</m:Value>
<m:ValueType>string</m:ValueType>
</m:Fields>
<m:Fields>
<m:Key>Weight</m:Key>
<m:Value>1</m:Value>
<m:ValueType>float</m:ValueType>
</m:Fields>
<m:Fields>
<m:Key>VolumeWeight</m:Key>
<m:Value>1</m:Value>
<m:ValueType>float</m:ValueType>
</m:Fields>
<m:Fields>
<m:Key>Volume</m:Key>
<m:Value>1</m:Value>
<m:ValueType>float</m:ValueType>
</m:Fields>
<m:Fields>
<m:Key>Qty</m:Key>
<m:Value>1</m:Value>
<m:ValueType>int</m:ValueType>
</m:Fields>
</m:List>
</m:data>
<m:parameters xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<m:Key>Parameters</m:Key>
<m:List>
<m:Key>ipaddress</m:Key>
<m:Value xsi:type="xs:string">10.0.0.1</m:Value>
<m:ValueType>string</m:ValueType>
</m:List>
</m:parameters>
</m:Calc>
</soap:Body>
</soap:Envelope>';

	$ch = curl_init();
	curl_setopt_array(
		$ch,
		array(
			CURLOPT_URL => 'http://lk-test.cse.ru/1c/ws/web1c.1cws?wsdl',        //wsdl
			CURLOPT_VERBOSE => FALSE,
			CURLOPT_RETURNTRANSFER => TRUE,
			CURLOPT_POST => TRUE,
			CURLOPT_POSTFIELDS => $query,
			CURLOPT_HEADER => FALSE,
			CURLOPT_HTTPHEADER => array('Content-Type: text/xml')
		)
	);
	$response = curl_exec($ch);
	curl_close($ch);
	
	header('Content-Type: text/xml');
	print_r($response);
	
?>


В ответе приходит только это:
This XML file does not appear to have any style information associated with it. The document tree is shown below.

Что делаю не так? Подскажите пожалуйста.
  • Вопрос задан
  • 1900 просмотров
Пригласить эксперта
Ответы на вопрос 2
@galliard
WSDL нужна для кодогенерации, а не чтоб вручную xml пересылать.

Вот например библиотечка https://packagist.org/packages/wsdl2phpgenerator/w...
Код она генерирует сомнительного качества, но ничего лучше я не нашел (хотя искал несколько дней).

CURLOPT_URL => 'lk-test.cse.ru/1c/ws/web1c.1cws?wsdl'

Это ссылка для скачивания wsdl, сами запросы к апи посылаются по другому url (какой конкретно - указано в wsdl)
Ответ написан
gromdron
@gromdron
Работаю с Bitrix24
А зачем Вы вручную это делаете?
Начнем с того, что в php есть расширение php-soap, которому только скормить адрес wsdl и вызывать уже готовые методы.

В крайнем случае, можно воспользоваться готовой библиотекой nusoap
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы