2013年7月18日木曜日

php curl でちょっとはまった

phpのcurlを使って、バイナリデータを送る際ちょっとはまったのでメモ。

RestfulなAPIへxmlデータをサーバに送信する際、key無しで送信するためには、以下のように「file_get_contents」関数を使ってファイルデータを取得して、POST 送信する必要がある。

$ch2 = curl_init($url);
curl_setopt($ch2, CURLOPT_SSL_VERIFYPEER, FALSE); // -k
curl_setopt($ch2, CURLOPT_POST, TRUE); // POST
curl_setopt($ch2, CURLOPT_BINARYTRANSFER, TRUE); // --data-binary
curl_setopt($ch2, CURLOPT_HTTPHEADER, ['Content-Type: text/xml;charset=utf-8', 'User-Agent: curl']); // Http Header
// 返り値を文字列として受け取る場合はONに
//curl_setopt($ch2, CURLOPT_RETURNTRANSFER, TRUE);
//curl_setopt($ch2, CURLOPT_TRANSFERTEXT, TRUE);
//curl_setopt($ch2, CURLOPT_COOKIESESSION, TRUE);
curl_setopt($ch2, CURLINFO_HEADER_OUT, TRUE);
$xml_flie = 動画のフルパス;
$postdata = file_get_contents($xml_flie);
curl_setopt($ch2, CURLOPT_POSTFIELDS, $postdata);
$response = curl_exec($ch2);
view raw php hosted with ❤ by GitHub

0 件のコメント:

コメントを投稿