Запросы на мыло с помощью Curl PHP - PullRequest
0 голосов
/ 02 октября 2018

Как я могу сделать запрос Soap, используя Curl php, используя ниже формат мыла и URL?Я пробовал доступные онлайн решения, и ни одно из них не сработало.

$soap_request = '<?xml version="1.0" encoding="UTF-8"?>
        <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="urn:alisonwsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
          <soap:Header>
            <credentials>
                <alisonOrgId>9ReXlYlpOThe24AWisE</alisonOrgId>
                <alisonOrgKey>C2owrOtRegikaroXaji</alisonOrgKey>
            </credentials>
          </soap:Header>
          <SOAP-ENV:Body>
            <q1:login xmlns:q1="urn:alisonwsdl">
                <email xsi:type="xsd:string">email</email>
                <firstname xsi:type="xsd:string">fname</firstname>
                <lastname xsi:type="xsd:string">lname</lastname>
                <city xsi:type="xsd:string">city</city>
                <country xsi:type="xsd:string">country</country>
                <external_id xsi:type="xsd:string"></external_id>
            </q1:login>
          </SOAP-ENV:Body>
        </SOAP-ENV:Envelope>';

 Url
https://alison.com/api/service.php?wsdl

Ответы [ 2 ]

0 голосов
/ 06 октября 2018

После недолгой борьбы я смог найти что-то в этом уроке здесь, на youtube https://www.youtube.com/watch?v=6V_myufS89A, и мне удалось успешно отправлять запросы в API, сначала прочитайте мой формат xml выше, прежде чем продолжить с моим решением

     $options = array('trace'=> true, "exception" => 0);

    $client  = new \SoapClient('your url to wsdl',$options);

   //if you have Authorization parameters in your xml like mine above use SoapVar and SoapHeader as me below

    $params = new \stdClass();
    $params->alisonOrgId = value here';
    $params->alisonOrgKey = 'value here';

    $authentication_parameters = new \SoapVar($params,SOAP_ENC_OBJECT);

    $header = new \SoapHeader('your url to wsdl','credentials',$authentication_parameters);

    $client->__setSoapHeaders(array($header));


   print_r($client->__soapCall("Function here",'Function parameter here or left it as null if has no parameter'));

    //or call your function by

     print_r($client->yourFunction($function_parameters));

    }

Надеюсь, что это поможет кому-то там бороться с запросами мыла, которые содержат информацию аутентификации

0 голосов
/ 02 октября 2018

Если у вас уже установлено расширение php_soap, вы можете получить доступ к SOAP API следующим образом:

<?php

$client = new SoapClient('https://alison.com/api/service.php?wsdl', array(
    'stream_context' => stream_context_create(array(
        'ssl' => array(
            'verify_peer' => false,
            'verify_peer_name' => false, 
            'allow_self_signed' => true
        )
    ))
));

Возможно, вы также захотите определить заголовок для аутентификации

$auth = array(
    'alisonOrgId' => '9ReXlYlpOThe24AWisE',
    'alisonOrgKey' => 'C2owrOtRegikaroXaji'
);

$header = new SoapHeader('https://alison.com/api/service.php?wsdl', 'credentials', $auth, false);
$client->__setSoapHeaders($header);

ТогдаВы можете получить список доступных функций

<code>// Get function list
$functions = $client->__getFunctions ();
echo "<pre>";
var_dump ($functions);
echo "
"; die;

Или сразу вызвать функцию, например:

<code>// Run the function
$obj = $client->__soapCall("emailExists", array(
    "email" => "test@email.com"
));
echo "<pre>";
var_dump ($obj);
echo "
";умереть;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...