【问题标题】:fsockopen - POST and GET PHPfsockopen - 发布和获取 PHP
【发布时间】:2014-02-06 10:15:04
【问题描述】:

使用 fsockopen 执行 POST 后,我的 GET 请求出现问题
我发送了 cookie,但没有成功。

我收到 HTTP/1.1 302 对象已移动 -> POST
我收到 HTTP/1.1 302 对象已移动 -> GET,但我希望收到 HTTP/1.1 200 OK

我的代码:

用法: $this->read();

function HTTP_POST($URL, $data, $referrer="") 
{ 
  $URL_Info=parse_url($URL); 
  if($referrer=="")
  {
    $referrer=$_SERVER["SCRIPT_URI"]; 
  }

  foreach($data as $key=>$value) 
  {
    $values[]="$key=".urlencode($value); 
  }
  $data_string=implode("&",$values); 

  if(!isset($URL_Info["port"])) 
  {
    $URL_Info["port"]=80; 
  }

  $request.="POST ".$URL_Info["path"]." HTTP/1.1\n"; 
  $request.="Host: ".$URL_Info["host"]."\n"; 
  $request.="Referer: $referer\n"; 
  $request.="Content-type: application/x-www-form-urlencoded\n"; 
  $request.="Content-length: ".strlen($data_string)."\n"; 
  $request.="User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0.1) Gecko/2100101 Firefox/4.0.1\n";
  $request.="Connection: close\n"; 
  $request.="\n"; 
  $request.=$data_string."\n"; 

  $fp = fsockopen($URL_Info["host"],$URL_Info["port"]); 
  fputs($fp, $request); 
  while(!feof($fp)) 
  { 
    $result .= fgets($fp, 128); 
  } 
  fclose($fp); 
  return $result; 
} 

function HTTP_GET($URL, $cookie, $referrer="")
{ 
  $URL_Info = parse_url($URL); 
  if($referrer=="") 
  {
    $referrer=$_SERVER["SCRIPT_URI"]; 
  }
  if(!isset($URL_Info["port"]))
  {
    $URL_Info["port"]=80; 
  }

  $request.="GET ".$URL_Info["path"]." HTTP/1.1\n"; 
  $request.="Host: ".$URL_Info["host"]."\n"; 
  $request.="Referer: $referer\n"; 
  $request.="User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0.1) Gecko/2100101 Firefox/4.0.1\n";
  $request.="Cookie: ".$cookie."\n"; 
  $request.="Connection: close\n"; 
  $request.="\n"; 

  $fp = fsockopen($URL_Info["host"],$URL_Info["port"]); 
  fputs($fp, $request); 
  while(!feof($fp)) 
  { 
    $result .= fgets($fp, 128); 
  } 
  fclose($fp); 
  return $result; 
}


function read()
{
  $headers = array();
  $data = array('CNPJ' => '02340534000192', 'consulta' => 'OK', 'vazio' => '');
  $html = $this->HTTP_POST('http://www.sefaz.pe.gov.br/sintegra/consulta/consulta.asp', $data);

  $arr = split("Set-Cookie:", $html); 
  $cookie="";
  $count=1; 
  while ($count < count($arr)) 
  { 
    $cookie.=substr($arr[$count].";", 0, strpos($arr[$count].";",";")+1); 
    $count++;
  } 

  echo $html."<br><hr><br>"; 

  $html = $this->HTTP_GET('http://www.sefaz.pe.gov.br/sintegra/consulta/exibirResultado.asp', $cookie);
  echo $html;
}

谁能帮助我?

谢谢。

【问题讨论】:

    标签: php post cookies get fsockopen


    【解决方案1】:

    HTTP/1.1 302 对象已移动意味着页面临时从该位置移动。 再次检查您的请求。尝试从浏览器打开请求页面。

    【讨论】:

    • 我无法获得 HTTP 200 好的,我的目标是 200 但我只获得 302... 直到我执行 GET 之后
    • 尝试打开 chrome,按 Ctr+Shift+I,然后打开您需要的页面,如果标题相同 - 页面临时从该位置移动。
    猜你喜欢
    • 2011-01-22
    • 1970-01-01
    • 1970-01-01
    • 2011-11-15
    • 2016-01-18
    • 2015-05-18
    • 2011-08-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多