Как послать запрос на сервер

117
10 ноября 2019, 20:50

Установил себе Postman. В теле запроса такое

{
        "apiKey": "[ВАШ КЛЮЧ]",
        "modelName": "TrackingDocument",
        "calledMethod": "getStatusDocuments",
        "methodProperties": {
            "Documents": [
                {
                    "DocumentNumber": "20400120240053"
                }
            ]
        }
    }

В ссылке такое

http://testapi.novaposhta.ua/v2.0/en/documentsTracking/json/

Получаю ответ

{
        "success": true,
        "data": [
            {
                "Number": "20400120240053",
                "Redelivery": 0,
    . так далеее....

Копирую ctrl+c ctrl+v ответ в файлик в формате json ( response.json) И обрабатываю его так

<?php
            $jsondata = file_get_contents("response.json");
            $json = json_decode($jsondata,true);
            //$output = $json['data'];
            foreach ($json['data'] as $data) {
                $output .= "Номер декларації: ".$data['Number']."<br/>";
                $output .= "Місто відправки: ".$data['CitySender']."<br/>";
                $output .= "Склад відправки: ".$data['WarehouseSender']."<br/>";
                $output .= "Місто отримання: ".$data['CityRecipient']."<br/>";
                $output .= "Склад отримання: ".$data['WarehouseRecipient']."<br/>";
            }
            echo $output;
             ?>

На фронтенде получаю. Номер декларації: 20400120240053 Місто відправки: Дніпро Склад відправки: Відділення №6: вул. Ударників, 27 Місто отримання: Ковель Склад отримання: Відділення №1: вул. Володимирська, 135

Как мне послать этот запрос. Я так понимаю из input я буду брать номер декларации как его вставлять динамически в запрос. И как потом ответ помещать в файл? Если кто может напишите пример.... Буду очень признателен.

Answer 1

POST-запрос, с json-данными в качестве параметра запроса можно отправить с использованием ф-ции file_get_contents():

<?php
$payload = <<< EOT
{
    "apiKey": "[ВАШ КЛЮЧ]",
    "modelName": "TrackingDocument",
    "calledMethod": "getStatusDocuments",
    "methodProperties": {
        "Documents": [
            {
                "DocumentNumber": "20400120240053"
            }
        ]
    }
}
EOT;
$opts = [
    'http' => [
        'method'  => 'POST',
        'header'  => 'Content-Type: application/x-www-form-urlencoded',
        'content' => $payload
    ]
];
$context = stream_context_create($opts);
$jsondata = file_get_contents(
    "http://testapi.novaposhta.ua/v2.0/en/documentsTracking/json/",
    false,
    $context
); // <--- результат!
...

Полученный результат - данные в json-формате.

Можно, вместо ф-ции file_get_contents() использовать библиотеку cURL:

<?php
$payload = <<< EOT
{
    "apiKey": "[ВАШ КЛЮЧ]",
    "modelName": "TrackingDocument",
    "calledMethod": "getStatusDocuments",
    "methodProperties": {
        "Documents": [
            {
                "DocumentNumber": "20400120240053"
            }
        ]
    }
}
EOT;
$ch = curl_init("http://testapi.novaposhta.ua/v2.0/en/documentsTracking/json/");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Content-Type: application/x-www-form-urlencoded')
]);
$jsondata = curl_exec($ch); // <--- результат!
curl_close($ch);

Полученный результат - данные в json-формате.

READ ALSO
Как создать свою локализацию в Yii2

Как создать свою локализацию в Yii2

Делаю сайт на Yii2Использую разные виджеты, например, GridView

186
Не работает вывод в браузер PDF dompdf

Не работает вывод в браузер PDF dompdf

При попытке выгрузить PDF в браузер с помощью $dompdf->stream('schet-16pdf'); Выгружается невалидный PDF

110
Wordpress - add_rewrite_rule и sitemap

Wordpress - add_rewrite_rule и sitemap

Есть два custom_post_type => country и turs Хочу получить по итогу для turs url вида /country/russia/turs/moscow В итоге, получаю при помощи:

128
Проблема с composer и модулями phar и json

Проблема с composer и модулями phar и json

Ребята, нервы дико сдаютУстанавливаю на сервер ubuntu 18 PHPWord

105