веб-сервисы — Исключение «ссылка на строку не установлена ​​на экземпляр строки» в мыльном клиенте php

Я пытаюсь написать мыльный клиент для сервиса по адресу:
http://link-products.chiangcn.com/APIService.asmx
http://link-products.chiangcn.com/APIService.asmx?WSDL

Я запросил типы (_getTypes), которые предлагает сервис. Ниже приведена структура типа для операции «GetAuthorizedCategories», которую я пытаюсь выполнить:

Types:
struct GetAuthorizedCategories {
string Request;
}

Ниже приведен мой php-код, который пытается использовать операцию GetAuthorizedCategories веб-службы:

<?php
$soap = new SoapClient('http://link-products.chiangcn.com/APIService.asmx?WSDL');
$arg = new stdClass;
$arg -> ClientId = 'ccd839ad-aef4-4748-a1c5-5235ef24f8ad';
$arg -> AccessToken = "155a0d0c2fea4e8a8c6da4bf5366241d";
$arguments = array('Request' => $arg);
$obj = $soap -> __soapCall('GetAuthorizedCategories', $arguments);
echo '<pre>';
var_dump($obj);
echo '</pre>';
?>

Это исключение, которое я получаю от веб-службы.

object(stdClass)[3]
public 'GetAuthorizedCategoriesResult' => string '<?xml version="1.0"?>
<Errors xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Code>0</Code>
<Message>System.ArgumentNullException: String reference not set to an instance of a String.
Parameter name: s
at System.Text.Encoding.GetBytes(String s)
at PushData.Service.Utility.DeserializeXML[T](String xml)
at PushData.Service.APIService.GetAuthorizedCategories(String Request)</Message>
</Errors>' (length=459)

Это первый клиент SOAP, который я пишу. Любая помощь в исправлении этого будет полезна.

PS: это документ веб-сервиса
документ

0

Решение

Создайте обычный массив вместо использования экземпляра stdClass. Посмотри, работает ли это.

РЕДАКТИРОВАТЬ

Если вы не пытались. построить XML и использовать его как $ arg.

Вы можете увидеть здесь для дополнительной информации
http://link-products.chiangcn.com/APIService.asmx?op=GetAuthorizedCategories

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]