2016-05-18 7 views
0

私のAPIは、FOSRestBundleとNelmioのSymfony(2.8.6)でドキュメント化しています。Symfony + FOSRestBundle(PUTメソッドのポストフィールド)

nelmioサンドボックスではすべてが完璧に機能しますが、APIをcURLで使用すると、1つのリソースを更新しようとしても何も起こりません。履歴書には

$curl = curl_init(); 
$data = array('fax' => 999); 

curl_setopt_array($curl, array(
    CURLOPT_URL => "http://".$host."/fr/api/users/1", 
    CURLOPT_RETURNTRANSFER => true, 
    CURLOPT_ENCODING => "", 
    CURLOPT_MAXREDIRS => 10, 
    CURLOPT_TIMEOUT => 30, 
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, 
    CURLOPT_CUSTOMREQUEST => 'PUT', 
    CURLOPT_POST => true, 
    CURLOPT_POSTFIELDS, http_build_query($data), 
    CURLOPT_HTTPHEADER => array(
     'cache-control: no-cache', 
     'x-auth-token: ' . $token, 
     'Content-Length: ' . strlen($data) 
    ), 
)); 

$response = curl_exec($curl); 
$err = curl_error($curl); 

curl_close($curl); 

、私はサンドボックスを通じて、「ファックス」フィールドを更新することができますが、私はcURLの

で外部のphpファイルを任意のアイデアと同じことをしようとすると、何も起こりません? (トークンとURLは正しい)

ありがとうございました!

ロジャー

EDIT

溶液は(私は理解していないこと)ユーザーエージェントを入れている...これはcURLですべてが完璧に郵便配達を通じ

$curl = curl_init(); 

$data_curl = http_build_query(array('fax' => 123456789)); 

curl_setopt_array($curl, array(
    CURLOPT_URL => "http://".$host."/fr/api/users/1", 
    CURLOPT_RETURNTRANSFER => true, 
    CURLOPT_ENCODING => "", 
    CURLOPT_MAXREDIRS => 10, 
    CURLOPT_TIMEOUT => 30, 
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, 
    CURLOPT_USERAGENT => "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36", 
    CURLOPT_CUSTOMREQUEST => "PUT", 
    CURLOPT_POSTFIELDS => $data_curl, 
    CURLOPT_HTTPHEADER => array(
     "cache-control: no-cache", 
     'Content-Length: ' . strlen($data_curl), 
     "x-auth-token: $token" 
    ), 
)); 

$response = curl_exec($curl); 
$err = curl_error($curl); 

curl_close($curl); 

if ($err) { 
    echo "cURL Error #:" . $err; 
} else { 
    echo $response; 
} 

の作品コマンドラインは:

curl -X PUT -H "x-auth-token: 112233" -H "Cache-Control: no-cache" -H "Postman-Token: fa3ba9da-986e-4c66-f03a-1d7fe1842a8b" -H "Content-Type: application/x-www-form-urlencoded" -d 'fax=55' "http://".$host."/fr/api/users/1" 

もう一度ありがとう!コマンドラインでカールを実行するための

+0

$応答の内容で、$誤る何?これらの変数をデバッグできますか? –

+1

場合によっては、サーバーは身元不明のユーザーエージェントを含む要求を許可しません。他のケースでは、特定の機能が無効になります(これまでは、ブラウザの古さが間違っていたことがあります)。カスタムユーザーエージェントを設定することにより、これらのサーバーを欺くことで、 というcURL要求が正当な最新のブラウザからのものであると考えることができます。 http://thisinterestsme.com/php-set-curl-user-agent/ –

+1

ありがとうございます@MohamedBenHENDA –

答えて

0

試してみてください。

​​
関連する問題