Laravel Gazzel Многократные запросы к одному URL без входа в систему несколько раз - PullRequest
0 голосов
/ 20 сентября 2019

Итак, у меня есть настройки этого класса в laravel.Он использует следующий заголовок для инициализации запросов.

    $this->xml = "<?xml version=\"1.0\"?>
    <query xmlns=\"http://www.someurl.com/queryLanguage/v1.0\">
        <logon>
            <userName>".config('some.username')."</userName>
            <password>".config('some.password')."</password>
            <deviceName>".config('some.device')."</deviceName>
        </logon>";

Тогда мне нужно сделать 10 запросов на один и тот же URL с указанными выше деталями аутентификации.

, поэтому я делаю это как.

    $xml1 = $this->xml;
    $xml1 .= "some xml";
    $options = [
        'headers' => [
            'Content-Type' => 'text/xml; charset=UTF8',
        ],
        'body' => $xml1,
    ];

    $client = new Client(); 
    $response = $client->request('POST', config('some.apiurl'), $options);

    $xml2 = $this->xml;
    $xml2 .= "some xml";
    $options = [
        'headers' => [
            'Content-Type' => 'text/xml; charset=UTF8',
        ],
        'body' => $xml2,
    ];

    $client = new Client(); 
    $response = $client->request('POST', config('some.apiurl'), $options); 

    $xml3 = $this->xml;
    $xml3 .= "some xml";
    $options = [
        'headers' => [
            'Content-Type' => 'text/xml; charset=UTF8',
        ],
        'body' => $xml3,
    ];

    $client = new Client(); 
    $response = $client->request('POST', config('some.apiurl'), $options); 

, как вы можете видеть при каждом запросе, он создает новый логин и в конечном итоге получает слишком много ошибок одновременного входа с удаленного сервера.поэтому мой вопрос заключается в том, как мы используем эту информацию для входа в API и просто авторизируемся один раз с помощью guzzel, а затем используем ее для нескольких запросов позже.

Заранее спасибо.

1 Ответ

0 голосов
/ 20 сентября 2019

Вы можете использовать Guzzle CookieJar, чтобы сохранить сеанс и отправить его на следующий запрос.

http://docs.guzzlephp.org/en/stable/quickstart.html#cookies

#Request-1
$login = $client->request("POST" , $url , [
    "headers" => $header,
    "body" => $xmlLogin
]);

// Here you should get all cookies from $login request and save it to $tmpCookieJar variable for example.

// For request-2 it will depends on the requirement of the endpoint or api.

#Request-2
$action2 = $client->request("POST" , $url , [
    "headers" => $header,
    "body" => $xmlLogin, // If necessary
    "cookies" => $tmpCookieJar
]);
...