"値") */ function sendHTTPQuery($url, $method="GET", $headers="", $post=array("")) { /* URLを分解 */ $parsedURL = parse_url($url); //URLの存在を確認(fsockopenのエラー抑制のため) if ($parsedURL && $parsedURL['host']) { $ip = getHostByName($parsedURL['host']); $long = ip2long($ip); if ($long === false || $ip !== long2ip($long)) { //Cannot resolve domain name exit("[747332]"); } else { //ValidURL } } else { //Invalid URL exit("[747914]"); } if(!$parsedURL){ return false; } /* クエリー */ if (isset($parsedURL['query'])) { $parsedURL['query'] = "?".$parsedURL['query']; } else { $parsedURL['query'] = ""; } /* デフォルトのポートは80 */ if (!isset($parsedURL['port'])) $parsedURL['port'] = 80; /* リクエストライン */ $request = $method." ".$parsedURL['path'].$parsedURL['query']." HTTP/1.0\r\n"; /* リクエストヘッダ */ $request .= "Host: ".$parsedURL['host']."\r\n"; $request .= "User-Agent: PHP/".phpversion()."\r\n"; /* Basic認証用のヘッダ */ if (isset($parsedURL['user']) && isset($parsedURL['pass'])) { $request .= "Authorization: Basic ".base64_encode($parsedURL['user'].":".$parsedURL['pass'])."\r\n"; } /* 追加ヘッダ */ $request .= $headers; /* POSTの時はヘッダを追加して末尾にURLエンコードしたデータを添付 */ if (strtoupper($method) == "POST") { while (list($name, $value) = each($post)) { $POST[] = $name."=".urlencode($value); } $postdata = implode("&", $POST); $request .= "Content-Type: application/x-www-form-urlencoded\r\n"; $request .= "Content-Length: ".strlen($postdata)."\r\n"; $request .= "\r\n"; $request .= $postdata; } else { $request .= "\r\n"; } /* WEBサーバへ接続 */ $fp = fsockopen($parsedURL['host'], $parsedURL['port']); /* 接続に失敗した時の処理 */ if (!$fp) { die("ERROR\n"); } /* 要求データ送信 */ fputs($fp, $request); /* 応答データ受信 */ $response = ""; while (!feof($fp)) { $response .= fgets($fp, 65535); } /* 接続を終了 */ fclose($fp); /* ヘッダ部分とボディ部分を分離 */ $DATA = split("\r\n\r\n", $response, 2); /* リクエストヘッダをコメントアウトして出力 */ //echo "\n"; /* レスポンスヘッダをコメントアウトして出力 */ //echo "\n"; //echo($DATA[0]); /* メッセージボディを出力 */ echo $DATA[1]; } ?>