ベーシック認証のかかっている別サイトにJPEG画像を生データでPOSTするメモ
投稿者: lllnorikolll, カテゴリ: ZendFramework, メモ箱, tags: PHP, Zend_Http苦労したのでメモ。
[php]
$Url = ‘http://ほげほげー.com/ほげー/ほげー.php’;
$UserId = ‘ユーザID’;
$Pwd = ‘パスワード’;
$binaryData = @file_get_contents(’ファイル名’, FILE_BINARY);
$arrUrl = parse_url($Url);
$host = $arrUrl["host"];
$path = $arrUrl["path"];
$port = isset($arrUrl["port"]) ? $arrUrl["port"] : 80;
$socket = @stream_socket_client(‘tcp://’ . $host . ‘:’ . $port);
$strHeader = “POST ” . $path . ” HTTP/1.1\r\n” .
“Host: ” . $host . “\r\n” .
“Content-type: application/jpeg\r\n” .
“Authorization: Basic ” . base64_encode($UserId . “:” . $Pwd) . “\r\n” .
“Content-length: ” . $entity->size . “\r\n” .
“\r\n”;
@fwrite($socket, $strHeader . $binaryData . “\r\n”);
while ($buff = @fread($socket)) {
$response .= $buff;
}
@fclose($socket);
[/php]
ちなみにZendFrameworkのライブラリにZend_Httpという便利なものがあります!!!
Zend_Httpなら、下記のように書くだけ!
[php]
require_once ‘Zend/Http/Client.php’;
$Url = ‘http://ほげほげー.com/ほげー/ほげー.php’;
$UserId = ‘ユーザID’;
$Pwd = ‘パスワード’;
$binaryData = @file_get_contents(’ファイル名’, FILE_BINARY);
$client = new Zend_Http_Client();
$client->setUri($Url);
$client->setAuth($UserId, $Pwd, Zend_Http_Client::AUTH_BASIC);
$client->setRawData($binaryData, ‘application/jpeg’)->request(‘POST’);
[/php]
エントリ (RSS)