$server="localhost";
$port="8008";
$url="/test/test.jsf?";
$params="msg=test";
$msg=getRemoteData($server,$port,$url,$params);
echo $msg;function getRemoteData($server,$port,$url,$params)
{
$fp = fsockopen($server, $port, $errno, $errstr, 30);
$header="GET ".$url.$params." HTTP/1.1\r\n";
$header .= "Host:".$server."\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Connection: Close\r\n\r\n";
fputs($fp,$header);
$line = fgets($fp,1024);
$results = "";
if (!eregi("^HTTP/1\.. 200", $line))
{
$results="系统繁忙,请稍候再试!";
}
else
{ $inheader = 1;
while(!feof($fp))
{
$line = fgets($fp,1024);
if ($inheader && ($line == "\n" || $line == "\r\n"))
{
$inheader = 0;
}
elseif (!$inheader)
{
$results .= $line;
}
}
}
fclose($fp);
return $results;
}
现在做个项目,就是根据合作方的url取得内容。现在是如果url不跳转,就能取得内容,但是现在合作方的url需要跳转,取数据是报“HTTP/1.1 500 Internal Server Error ”这种情况怎么解决,急急急
$port="8008";
$url="/test/test.jsf?";
$params="msg=test";
$msg=getRemoteData($server,$port,$url,$params);
echo $msg;function getRemoteData($server,$port,$url,$params)
{
$fp = fsockopen($server, $port, $errno, $errstr, 30);
$header="GET ".$url.$params." HTTP/1.1\r\n";
$header .= "Host:".$server."\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Connection: Close\r\n\r\n";
fputs($fp,$header);
$line = fgets($fp,1024);
$results = "";
if (!eregi("^HTTP/1\.. 200", $line))
{
$results="系统繁忙,请稍候再试!";
}
else
{ $inheader = 1;
while(!feof($fp))
{
$line = fgets($fp,1024);
if ($inheader && ($line == "\n" || $line == "\r\n"))
{
$inheader = 0;
}
elseif (!$inheader)
{
$results .= $line;
}
}
}
fclose($fp);
return $results;
}
现在做个项目,就是根据合作方的url取得内容。现在是如果url不跳转,就能取得内容,但是现在合作方的url需要跳转,取数据是报“HTTP/1.1 500 Internal Server Error ”这种情况怎么解决,急急急
1 header
2 meta refresh
3 js
1最简单,2 要正则分析meta头 3 最困难,基本可以放弃
自己写sock是比较麻烦得,而且还有gzip压缩得情况,一般使用curl扩展库读取(有自动处理header跳转参数),或者调用外部命令行