JSON — HTTP PUT-запрос в переполнении стека

Как сделать PUT HTTP REQUEST для (http://sample.com:8888/folder) со случайным заголовком и REQUEST-BODY с JSON String {«key»: «la09823», «content»: «jfkdls»}
HTTP код состояния 200 ОК, было бы хорошо.
Извините за мой первый сокет путающий код PHP: D<3. спасибо

<?php
$json = "\{\"key\": \"la09823\", \"content\": \"jfkdls\"}";
$hostname="http://sample.com/folder");
$port = 8888;
$timeout = 50;
$socket = socket_create(AF_INET, SOCK_STREAM, tcp);
socket_connect($socket, $hostname, $port);
$text = "PUT /folder/json.txt" HTTP/1.1\n";
$text .= "Host: WhoIAm.com\n";
$text .= "Content-Type: application/json\n";
$text .= "Content-length: " . strlen($json) . "\n";
$finish = $text + $json;
socket_write($socket, $finish, 0);
socket_close($socket);?>

0

Решение

Не используйте необработанные сокеты для выполнения HTTP-запросов. Для этого есть гораздо лучшие библиотеки, например cURL:

<?php

$data = [
"key" => "la09823",
"content" => "jfkdls",
];

$req = curl_init();
curl_setopt_array($req, [
CURLOPT_URL            => "https://httpbin.org/put",
CURLOPT_CUSTOMREQUEST  => "PUT",
CURLOPT_POSTFIELDS     => json_encode($data),
CURLOPT_HTTPHEADER     => [ "Content-Type" => "application/json" ],
CURLOPT_RETURNTRANSFER => true,
]);

$response = curl_exec($req);
print_r($response);

(Я использовал httpbin для тестирования этого кода. Очевидно, вы захотите использовать другой URL здесь.)

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]