Zend Http Client PUT-запрос возвращает 403, как настроить тело запроса? - PullRequest
0 голосов
/ 22 января 2020

Это веб-сайт на основе 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;
  }
...