Это веб-сайт на основе Magento 2.1.18, и я создаю расширение для книжных посылок через API-интерфейс курьера. Я сделал все запросы GET и POST работающими, но у PUT все еще есть некоторые проблемы.
В частности, если запрос не имеет содержимого тела, он может вернуть данные, которые мы вставили ранее (с помощью fsockopen () и fwrite ()), но если запрос имеет тело (для обновления данных) , возвращает 403 ОШИБКА.
Итак, я думаю, что-то не так, когда я настраиваю содержание тела? Чтобы настроить содержимое тела, я использую setRawData () для запросов POST, это также работает для запроса PUT?
Вот мой код:
public function sendPutRequest($request_action, $content)
{
$content_json = json_encode($content);
$config = array(
'adapter' => 'Zend_Http_Client_Adapter_Socket',
'ssltransport' => static::API_SCHEME,
'maxredirects' => 0,
'timeout' => 30,
);
$this->_client->setConfig($config);
$request_header = $this->buildHttpHeaders($request_action, strlen($content_json), true);
$this->_client->setHeaders($request_header);
$fullUrl = "https://".static::API_HOST.static::TEST_BED.static::API_BASE_URL.$request_action;
$this->_client->setUri($fullUrl);
$this->_client->setRawData($content_json);
try {
$response = $this->_client->request(\Zend_Http_Client::PUT);
$result = $response ->getBody();
} catch (\Exception $e) {
throw $e;
}
return $result;
}