- 论坛徽章:
- 0
|
//组织COOKIE数据
$cookie = '';
if (!empty($cookies)){
if (is_array($cookies)){
$encoded = '';
while (list($k,$v) = each($cookies)) {
$encoded .= ($encoded ? ";" : "");
$encoded .= rawurlencode($k)."=".rawurlencode($v);
}
$cookie = $encoded;
} elseif (is_string($cookies)){
if (strtolower(substr($cookies, 0, 7)) == 'cookie:'){
$cookie = substr($cookies, 7);
} else {
$cookie = $cookies;
}
}
}
if($method == 'POST') {
// 处理POST请求
$post = '';
if(!empty($vars)) {
if (is_array($vars)){
$encoded = '';
while (list($k,$v) = each($vars)) {
$encoded .= ($encoded ? "&" : "");
$encoded .= rawurlencode($k)."=".rawurlencode($v);
}
$post = $encoded;
} else {
$post = $vars;
}
}
}
// 处理请求
$url = parse_url($url);
if(strtolower($url['scheme']) != 'http' && $url['scheme'] != '') {
return 'fsockopen error';
}
if(!($fp = @fsockopen($url['host'], $url['port'] ? $url['port'] : 80, $errno, $errstr, 10))) {
return "Fsockopen Error:
No:{$errno}
String:{$errstr}";
}
if($method == 'POST') {
fputs($fp, sprintf("POST %s%s%s HTTP/1.0\n", $url['path'], $url['query'] ? $url['query'] : "", $url['query']));
} else if($method == 'GET') {
fputs($fp, sprintf("GET %s%s%s HTTP/1.0\n", $url['path'], $url['query'] ? $url['query'] : "", $url['query']));
}
fputs($fp, "Host: {$url['host']}\n");
fputs($fp, "User-Agent: HFHttp-Client\n");
if($cookie != '') {
fputs($fp, "Cookie: {$cookie}\n\n");
}
if($method == 'POST') {
fputs($fp, "Content-type: application/x-www-form-urlencoded\n");
fputs($fp, "Content-length: " . strlen($post) . "\n");
fputs($fp, "Connection: close\n\n");
fputs($fp, "$post \n");
} else if($method == 'GET') {
fputs($fp, "Connection: close\n\n");
fputs($fp, "$post \n");
}
$ret = '';
while (!feof($fp)) {
$c = fgets($fp, 1024);
if (preg_match("/^HTTP/", $c) || preg_match("/^P3P/", $c) || preg_match("/^([A-Za-z\-]+)\:\s*(.*)$/", $c)){
continue;
}
if (trim($c) == ""){
continue;
}
$ret .= $c;
}
fclose($fp);
return $ret;
}
}
} |
|
|