在 PHP 中对 PUT 请求使用 file_get_contents 的错误请求


Bad request using file_get_contents for PUT request in PHP

这个 api 调用使用 Postman(一个 REST 客户端)工作正常),但是在我的 GAE 应用程序中的服务器上发出请求时,我目前收到以下错误:

HTTP 请求失败了!在 C:''Projects''app''file.php 第 26 行

无法打开流:HTTP 请求失败!HTTP/1.0 400 第 26 行 C:''Projects''app''file.php 中的错误请求

这是我应用程序中的代码,它调用了 rest api 方法/exampleMethod

$dataraw = [ 
        'email' => 'email@ex.com',
        'first_name' => 'firstname',
        'last_name' => 'lastname',
        'fEmail' => 'email@ex.com',
        'message' => 'test' 
];
$data = http_build_query ( $dataraw );
$context = [ 
        'http' => [ 
                'method' => 'PUT',
                'header' => "Authorization: apikeystring'r'n" . "Content-Length: " . strlen($data) . "'r'n" . "Content-Type: application/json'r'n",
                'content' => $data,
                'proxy' => 'tcp://euproxy.example.com:0000' 
        ] 
];
$context = stream_context_create ( $context );
$result = file_get_contents ( $GLOBALS ['REST_API_URL'] . '/exampleMethod', false, $context );

在应用程序中,我已经成功地将file_get_contents用于 GET 请求,但是对于这个 PUT 请求,我收到了一个 400 个错误请求,该请求不是来自 Rest API。

将 mb_strlen(serialize($dataraw), '8bit') 更改为 strlen($data)