@alex99505

Как Soap преобразовать в curl?

Здравствуйте, есть soap запрос, который хочу перевести в curl, но сервер отвечает ошибкой. Самой структуры xml нет, есть только код:
$client = new SoapClient(null, array(
                'location' => 'https://site/soap.php',
                'uri' => 'https://site/soap.php',
                'login' => 'log', 'password' => 'pass')
        );
$parameters = array(
                "name1" =>"value1",
                "name2" => "value2");
$action='SOAPAction';
$results = $client->$action($parameters);


Пробовал так, результат - ошибка о неправильном запросе:

$xml=http_build_query($parameters);
$headers = array(
            "Cache-Control: no-cache",
            "Pragma: no-cache",
            "SOAPAction: $action",
            "Content-length: ".strlen($xml),
        ); 
$ch = curl_init();
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($ch, CURLOPT_URL, 'https://site/soap.php');
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_USERPWD, "log:pass"); /
        curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
        curl_setopt($ch, CURLOPT_TIMEOUT, 10);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $xml); /
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

        // converting
        $response = curl_exec($ch);
        curl_close($ch);


Есть идеи какие правки стоит внести?
  • Вопрос задан
  • 1457 просмотров
Пригласить эксперта
Ответы на вопрос 2
dimonchik2013
@dimonchik2013
non progredi est regredi
номинально все правильно

ищи что там кодируется в http_build_query, проверяй httpbin что приходит

отправляй без параметров - или еще как , чтобы получить успешный ответ

если soap клиентом работает, а курлом нет - заюзай фидлер для отладки
Ответ написан
Комментировать
@killerdr
а зачем это надо? Если просто принципиально переделать соап на курл, то это одно, ну а если данные из соапа получить в виде массива, а не объекта это другое.
из соап в курл так:
$result = json_decode(json_encode($result) , true);
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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