@heils

Как отправить json файл?

Добрый день. Нужно написать скрипт, который делает вот это
Для отправки сообщения используют метод POST HTTPs на следующий
resource_server_url:
https://dx-api-ru1.thingpark.com/core/latest/api/d...
Желтым цветом выделен ID датчика – это единственный параметр в URL, который меняется
для различных датчиков.
2. Для авторизации и отправки нужны определенные поля в headers:
"Content-type" - "application/json"
"Accept" - "application/json"
"Authorization", "Bearer
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzY29wZSI6WyJTVUJTQ1JJQkVSOjEwMDAwMDA3NSJ
dLCJleHAiOjM2NzIxNDY2NTEsImp0aSI6ImY4MDFkODcyLWNlYjMtNDY0MS1iNmZiLWU2N2NlZm
M0MGMzYiIsImNsaWVudF9pZCI6ImVydGVsZWNvbS1hcGkvdmFydmFyYS5ydWRlbmtvMUBkb2
1ydS5ydSJ9.kdQqIHpVdTE-1N5K9cTC872TkzhCKMIH0uU2FGWHW3n3nSGiDlP5pG5rs4jb_4xRmvZ4hJ20IsgXNj5-hcmuw”
3. Пример отправки POST следующего JSON:
{"payloadHex": "030100", "targetPorts": "2"}
4. При удачной отправке сообщения платформа должна ответить:
code = 201
status = QUEUED

Правильно ли я начал писать?
<?php
header("Content-type:application/json")
header("Accept:application/json")
header('Authorization: Bearer
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzY29wZSI6WyJTVUJTQ1JJQkVSOjEwMDAwMDA3NSJ
dLCJleHAiOjM2NzIxNDY2NTEsImp0aSI6ImY4MDFkODcyLWNlYjMtNDY0MS1iNmZiLWU2N2NlZm
M0MGMzYiIsImNsaWVudF9pZCI6ImVydGVsZWNvbS1hcGkvdmFydmFyYS5ydWRlbmtvMUBkb2
1ydS5ydSJ9.kdQqIHpVdTE-1N5K9cTC872TkzhCKMIH0uU2FGWHW3n3nSGiDlP5pG5rs4jb_4xRmvZ4hJ20IsgXNj5-hcmuw')

?>

И как отправить json ?
  • Вопрос задан
  • 1079 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Hanneman
Endpoint работает, но токен устарел:
POST /core/latest/api/devices/343438357237630F/downlinkMessages HTTP/1.1
Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzY29wZSI6WyJTVUJTQ1JJQkVSOjEwMDAwMDA3NSJdLCJleHAiOjM2NzIxNDY2NTEsImp0aSI6ImY4MDFkODcyLWNlYjMtNDY0MS1iNmZiLWU2N2NlZmM0MGMzYiIsImNsaWVudF9pZCI6ImVydGVsZWNvbS1hcGkvdmFydmFyYS5ydWRlbmtvMUBkb21ydS5ydSJ9.kdQqIHpVdTE-1N5K9cTC872TkzhCKMIH0uU2FGWHW3n3nSGiDlP5pG5rs4jb_4xRmvZ4hJ20IsgXNj5-hcmuw
Content-type: application/json
Accept: application/json
Content-Length: 44
Host: dx-api-ru1.thingpark.com
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)

{"payloadHex": "030100", "targetPorts": "2"}


Ответ от сервера:
HTTP/1.1 400 Bad Request
Server=nginx
Date=Mon, 05 Aug 2019 14:25:40 GMT
Content-Length=103
Connection=keep-alive
{
  "code" : 400,
  "message" : "Bad request: Invalid token or token has expired",
  "errorId" : null
}


Вот сам CURL:
curl -s -X POST -H "Content-type: application/json" -H 'Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzY29wZSI6WyJTVUJTQ1JJQkVSOjEwMDAwMDA3NSJdLCJleHAiOjM2NzIxNDY2NTEsImp0aSI6ImY4MDFkODcyLWNlYjMtNDY0MS1iNmZiLWU2N2NlZmM0MGMzYiIsImNsaWVudF9pZCI6ImVydGVsZWNvbS1hcGkvdmFydmFyYS5ydWRlbmtvMUBkb21ydS5ydSJ9.kdQqIHpVdTE-1N5K9cTC872TkzhCKMIH0uU2FGWHW3n3nSGiDlP5pG5rs4jb_4xRmvZ4hJ20IsgXNj5-hcmuw' -d '{"payloadHex": "030100", "targetPorts": "2"}' https://dx-api-ru1.thingpark.com/core/latest/api/devices/343438357237630F/downlinkMessages


Ну и разжеванный код на PHP:
<?php
    $url = 'https://dx-api-ru1.thingpark.com/core/latest/api/devices/343438357237630F/downlinkMessages';
    $ch = curl_init($url);
    $data = array(
        'payloadHex' => '030100',
        'targetPorts' => '2'
    );
    $payload = json_encode($data);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json', 'Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzY29wZSI6WyJTVUJTQ1JJQkVSOjEwMDAwMDA3NSJdLCJleHAiOjM2NzIxNDY2NTEsImp0aSI6ImY4MDFkODcyLWNlYjMtNDY0MS1iNmZiLWU2N2NlZmM0MGMzYiIsImNsaWVudF9pZCI6ImVydGVsZWNvbS1hcGkvdmFydmFyYS5ydWRlbmtvMUBkb21ydS5ydSJ9.kdQqIHpVdTE-1N5K9cTC872TkzhCKMIH0uU2FGWHW3n3nSGiDlP5pG5rs4jb_4xRmvZ4hJ20IsgXNj5-hcmuw'));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    echo $result = curl_exec($ch);
    curl_close($ch);
?>
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы