передача xml в nusoap - PullRequest
       8

передача xml в nusoap

1 голос
/ 21 июля 2010

Добрый день,

У меня проблемы с передачей xml в nusoap.

пример: я передаю этот xml

<test>123</test>

Ответ nusoap

test123/test

Знак больше и меньше удаляется.

Это мой код для сервера:


require_once('nusoap/nusoap.php');
$server = new nusoap_server; // Create server instance

$server->configureWSDL('demows','http://example.org/demo');

$server->register('myFunction',
    array("param"=>"xsd:string"), // input
    array("result"=>"xsd:string"), // output
    'http://example.org/demo'
);

function myFunction($parameters) {
    return $parameters;
}

// Use the request to try to invoke the service
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA: '';
$server->service($HTTP_RAW_POST_DATA);

Это мой код для клиента:


require_once('nusoap/nusoap.php');

$client = new nusoap_client('http://localhost/nusoap/ws.php?wsdl', true);

$clientparam = '<test>123</test>';

$result = $client->call('myFunction', 
    array('param'=>$clientparam)
);

print_r($result);

* Обратите внимание, что приведенный выше код работает на PHP версии 5.3.0, но НЕ на PHP версии 5.2.0-8 + etch13, который используется в нашем производстве.

Я искал в сети какие-либо проблемы с версией 2, но не нашел.Любая помощь высоко ценится.ТИА

Ответы [ 5 ]

1 голос
/ 06 декабря 2010

Обновите libxml2 и перестройте PHP.

0 голосов
/ 21 июля 2012

Если вы хотите передать значение xml в мыльном сообщении и контролировать как сервер, так и клиента (или, по крайней мере, можете указать клиенту), почему бы не base64 кодировать ваш xml.Тогда парсер увидит его как обычную строку и не запутается.

0 голосов
/ 25 сентября 2011

Да, и ответ в классе soapval .

Маленький грязный, но простой пример: здесь . Вкратце - вы должны обернуть этим классом любой неуниверсальный тип, то есть массив php Конечно, может быть вложение этих оберток, но это не против дизайна.

0 голосов
/ 02 августа 2010

Не уверен, что вы используете версию nusoap, отличную от меня, но я использую прокси, который, кажется, работает.Я также создаю экземпляр клиента с помощью soapclient, а не nusoap_client (раньше такого не видел):

 $client = new soapclient('http://localhost/nusoap/ws.php?wsdl', true);
 $proxy = $client->getProxy();
 $response = $proxy->call("myfunction", array('test' => 123));
0 голосов
/ 21 июля 2010

Я вообще не знаю nusoap, но похоже, что ваши сущности отбрасываются. Возможно, стоит контролировать объекты на любом конце, например, изменив '>' на & gt ;, '<' на & lt; либо вручную, либо с помощью функции, такой как htmlentities () </p>

...