У меня есть wsdl с единственной функцией getProd (), которая принимает строковый параметр и имеет SOAPaction getProd. Я был в состоянии использовать веб-сервис, используя NuSoap и SoapClient. Но всякий раз, когда я пытаюсь использовать его с помощью curl, я продолжаю получать сообщение об ошибке Отсутствует аргумент 1 для getProd (). Пожалуйста помоги. Раньше я использовал curl для использования других веб-сервисов, поэтому не знаю, в чем проблема.
Вот мой код
$soap_do = curl_init();
$post_string = "books";
curl_setopt($soap_do, CURLOPT_URL, "http://localhost/wsdl/post.php?wsdl" );
curl_setopt($soap_do, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($soap_do, CURLOPT_TIMEOUT, 10);
curl_setopt($soap_do, CURLOPT_RETURNTRANSFER, true );
curl_setopt($soap_do, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($soap_do, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($soap_do, CURLOPT_POST, true );
curl_setopt($soap_do, CURLOPT_POSTFIELDS, $post_string);
curl_setopt($soap_do, CURLOPT_HTTPHEADER, array(
'Content-Type: string; charset=utf-8',
"Cache-Control: no-cache",
"Pragma: no-cache",
"SOAPAction: getProd",
'Content-Length: '.strlen($post_string)
) );
$response = curl_exec($soap_do);
echo $response;
echo curl_error($soap_do);
Решаемые. Я понял, что NuSoap и SoapClient автоматически добавляют необходимый мыльный конверт. Хотя вы должны сделать это вручную при использовании Curl
Других решений пока нет …