2016-08-11 16 views
0

DrupalからRedmine APIへの投稿要求を行い、jsonを送信しようとしています。 しかし、私はそれをattempときにエラーが発生します。Drupal 8(Guzzle)からの投稿要求

$rawdata = '{ 
    "issue": { 
     "project_id": 85, 
     "subject": "Test from drupal", 
     "priority_id": 4 
    } 
}'; 

$data = json_encode($rawdata); 

POSTリクエスト:

データが送信される

$request = \Drupal::httpClient()->post($url,array(

     'headers' => array(
        'Accept' => 'application/json', 
        'Content-type' => 'application/json', 
        'X-Redmine-API-Key' => $this->apiKey), 
     )); 
    $request->setBody($data); 
    $response = $request->send($request); 

をそして、これが表示されますエラーです:私はエラーに研究しているし、それはそう

[:error] [pid 8316] [client XXX.XXX.XXX.XXX] FastCGI: server "/usr/lib/cgi-bin/php5-fcgi_xxxx" stderr: PHP message: Uncaught PHP Exception GuzzleHttp\\Exception\\ClientException: "Client error: 422" at dir/to/project/vendor/guzzlehttp/guzzle/src/Middleware.php line 69, referer: http://url-from-project/create 

ヘッダーのcontent-typeに問題があります。しかし、ヘッダオプションなしでリクエストを送信しようとすると、認証に関連する401クライアントエラーが表示されます。

それはこのようになります:

$request = \Drupal::httpClient()->post($url,array(
     'Accept' => 'application/json', 
     'Content-type' => 'application/json', 
     'X-Redmine-API-Key' => $this->apiKey, 
     )); 

そしてそれは、このエラーがスローされます。

[:error] [pid 8159] [client XXX.XXX.XXX.XXX] FastCGI: server "/usr/lib/cgi-bin/php5-fcgi_xxxx" stderr: PHP message: Uncaught PHP Exception GuzzleHttp\\Exception\\ClientException: "Client error: 401" at /dir/to/project/vendor/guzzlehttp/guzzle/src/Middleware.php line 69, referer: http://website.com/create 

誰もが任意のヒントを持っていますか?

私はこれで苦労しました。どんな助けもありがとう。

答えて

1

まず、JSONを手動で入力して変換することはお勧めしません。第2に、理由なくJSON文字列を変換しているようです。文字列そのものを送信してください。フォーマットは、あなたが送信している方法では無効になります。お役に立てれば。

関連する問題