Я новичок в SOAP, и у меня возникли проблемы (да, я много раз искал, но я не могу соответствовать моему очень простому требованию - отправка одной строки XML) с отправкой некоторого вывода в.NET сервер, чтобы соответствовать этому:
POST /someurl.asmx HTTP/1.1
Host: www.somehost.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://somehost.com/SubmitCalls"
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<SubmitCalls xmlns="http://somehost/">
<request>string</request>
</SubmitCalls>
</soap:Body>
</soap:Envelope>
Мой код nusoap выглядит так:
<code><?php
require_once('../lib/nusoap.php');
$bodyxml = '<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<SubmitCalls xmlns="http://somehost/" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<request>
<?xml version="1.0" encoding="UTF-8"?>
<bXML xmlns="http://somehost/Schemas" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<From>
<UserName>some username</UserName>
<Password>some password</Password>
</From>
<Calls>
<Call>
<Reference>11111</Reference>
<Name>Joe Bloggs</Name>
<Tel1>02075574200</Tel1>
<Tel2>02075574201</Tel2>
<Tel3>02075574202</Tel3>
<Tel4>02075574203</Tel4>
<Tel5>02075574204</Tel5>
<CLI>08448220640</CLI>
<CallTime>09:00</CallTime>
<FileName>02075574200_1</FileName>
</Call>
<Call>
<Reference>11111</Reference>
<Name>Joe Bloggs</Name>
<Tel1>02075574200</Tel1>
<Tel2>02075574206</Tel2>
<Tel3>02075574207</Tel3>
<Tel4>02075574208</Tel4>
<Tel5>02075574209</Tel5>
<CLI>08448220640</CLI>
<CallTime>09:00</CallTime>
<FileName>02075574200_2</FileName>
</Call>
</Calls>
</bXML>
</request>
</SubmitCalls>
</soap:Body>
</soap:Envelope>
';
$client = new nusoap_client("somehost?WSDL",true);
$err = $client->getError();
if ($err) {
echo '<h2>Constructor error</h2><pre>' . $err . '
';выход();} $ client-> soap_defencoding = 'utf-8';$ Client-> useHTTPPersistentConnection ();$ Client-> setUseCurl ($ useCURL);$ bsoapaction = "http://somehost/SubmitCalls"; $ result = $ client-> send ($ bodyxml, $ bsoapaction); // Проверить наличие ошибки if ($ client-> fault) {echo '
Fault
';
print_r($result);
echo '
';} else {// Проверка на ошибки $ err = $ client-> getError (); if ($ err) {// Отображение эха ошибки'
Ошибка
' . $err . '
';} else {// Показать результат echo '
Result
';
print_r($result);
echo '
';}} echo '
Запрос
' . htmlspecialchars($client->request, ENT_QUOTES) . '
'; echo '
Ответ
' . htmlspecialchars($client->response, ENT_QUOTES) . '
'; echo '
Отладка клиента
' . htmlspecialchars($client->debug_str, ENT_QUOTES) . '
'; echo'
Отладка прокси
' . htmlspecialchars($proxy->debug_str, ENT_QUOTES) . '
';?>
(Очевидно, что все имена somehost и пользователя верны впоследний сценарий.) Я могу подключиться к WSDL, прочитать его, есть только один интересующий меня метод (SubmitCalls), который имеет только одну часть, называемую «параметры» в схеме WSDL. Приведенное выше выдает ошибку 400 Bad request- есть идеи, где я ошибаюсь?
Я пытался использовать PHP SOAP вместо этого, но я просто не могу отправить строку XML в качестве тела SOAP-запроса.с этим в течение большей части трех днейи читать миллионы веб-страниц, но я все еще не могу понять это правильно.Пожалуйста, помогите .... если бы вы могли показать мне, как сделать это с помощью любой библиотеки, я был бы очень благодарен ....