$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 ”这种情况怎么解决,急急急

解决方案 »

  1.   

    错误代码写错了,是“HTTP/1.1 302 Moved Temporarily ”
      

  2.   

    跳转有3种
    1 header
    2 meta refresh
    3 js
    1最简单,2 要正则分析meta头 3 最困难,基本可以放弃
    自己写sock是比较麻烦得,而且还有gzip压缩得情况,一般使用curl扩展库读取(有自动处理header跳转参数),或者调用外部命令行
      

  3.   

    一般来说取header里面的referrer内容。