2015-03-12 3 views
2

Это апи вызов отлично работает с помощью почтальона (а REST Client), но при выполнении запроса на сервере в моем приложении GAE Сейчас я получаю следующее сообщение об ошибке:Bad запрос с помощью file_get_contents для запроса PUT в PHP

HTTP request failed! in C:\Projects\app\file.php on line 26

failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request in C:\Projects\app\file.php on line 26

Вот код из моего приложения, что делает вызов остальных метода API/exampleMethod

$dataraw = [ 
     'email' => '[email protected]', 
     'first_name' => 'firstname', 
     'last_name' => 'lastname', 
     'fEmail' => '[email protected]', 
     '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); 

в приложении I успешно используется file_get_contents для запросов GET, но с этим запросом PUT Я получаю 400 ба d запрос, который не поступает из Rest Api.

+0

И вы уверены, что запрос PUT занимает менее 30 секунд? –

+0

Да, в Postman требуется менее 2 секунд. – Kelsey

ответ

1

Изменить mb_strlen (сериализации ($ dataraw), '8bit') для STRLEN ($ данных)

+0

Это решило провал тайм-аута! Благодарю. Любая идея, почему сейчас я получаю 400? – Kelsey

+0

Скорее всего, ваше тело было усечено из-за неправильного Content-Length. – Mars

Смежные вопросы