Отправить форму-данные в wp_remote_post

#php #wordpress #curl #multipartform-data

#php #wordpress #curl #составная форма-данные

Вопрос:

У меня есть этот curl запрос, который работает:

 curl -X POST "https://peyk.uk/api/v1/get-auth-token"
     -F "client_id=xxxxx"
     -F "client_secret=xxxx"
  

Но при попытке воспроизвести с wp_remote_post помощью, я продолжаю получать ответ code 0, что совсем не помогает.

Я перепробовал много разных комбинаций, но в настоящее время мой запрос выглядит следующим образом:

 $body = json_encode(array(
  'client_id' => $this->settings['client_id'],
  'client_secret' => $this->settings['client_secret']
));

$result = wp_remote_post('https://peyk.uk/api/v1/get-auth-token', array(
  'method' => 'POST',
  'headers' => array('Content-Type' => 'multipart/form-data'),
  'body'=> array('formdata' => $body)
));
  

Есть идеи?

Ответ №1:

Вы отправляете тело в формате JSON, в то время как ваш сервер ожидает, что оно закодировано как поля формы. Введите это:

 $result = wp_remote_post('https://peyk.uk/api/v1/get-auth-token', array(
  'method' => 'POST',
  'headers' => array('Content-Type' => 'multipart/form-data'),
  'body' => array(
    'client_id' => $this->settings['client_id'],
    'client_secret' => $this->settings['client_secret']
  )
));
  

Подробности см. в документации.