user7938981
user7938981

Reputation:

Guzzle not sending POST parameters

I am sending this as a test to a test webserver, but the response although its a 201 which means it got it, it does not show the posted data I want to send:

<?php
  $url = "https://jsonplaceholder.typicode.com/posts";
  $client = \Drupal::httpClient();

  $post_data = array('color' => 'red');
  $response = $client->request('POST', $url, [
    'form_params' => $post_data,
    'verify' => false
    ]);
  $body = $response->getBody();
  dsm($body);
?>

Is the format of the request I made incorrect?

I can see that it is not getting the post data because when I do a dsm of the response body, it isn't there.

Upvotes: 1

Views: 3537

Answers (1)

user7938981
user7938981

Reputation:

This worked for me, looks like I needed to add the headers:

$url="https://jsonplaceholder.typicode.com/posts";
    $client = \Drupal::httpClient();
    $post_data = $form_state->cleanValues()->getValues();
    $response = $client->request('POST', $url, [
    'headers' => ['Content-Type' => 'application/x-www-form-urlencoded'],
    'form_params' => $post_data,
    'verify'=>false,
  ]);
    $body = $response->getBody()->getContents();
    $status = $response->getStatusCode();
    dsm($body);
    dsm($status);

Upvotes: 2

Related Questions