【问题标题】:POST and GET without cURL PHPPOST 和 GET 没有 cURL PHP
【发布时间】:2014-01-14 03:34:36
【问题描述】:

我曾尝试在此站点http://www.sefaz.pe.gov.br/sintegra 上发布 POST 和 GET,但它不起作用

// POST
$data = array('CNPJ' => '02340534000192', 'consulta' => 'OK', 'vazio' => '');
$html = $this->HTTP_Post('http://www.sefaz.pe.gov.br/sintegra/consulta/consulta.asp',    $data, $cookie);
$arr = split("Set-Cookie:", $html); 
$cookie="";
$count=1; 
while ($count < count($arr)) 
{ 
 $cookie.=substr($arr[$count].";", 0, strpos($arr[$count].";",";")+1); 
 $count++;
} 

// GET after POST
echo $this->get_url('http://www.sefaz.pe.gov.br/sintegra/consulta/exibirResultado.asp', $cookie);

我也尝试了 file_get_contents 和 curl...都没有成功

function get_url($url,$cookie=false)
{
  $url = parse_url($url);
  $query = $url[path]."?".$url[query];
  echo "Query:".$query;
  $fp = fsockopen( $url[host], $url[port]?$url[port]:80 , $errno, $errstr, 30);
  if (!$fp) 
  {
    return false;
  }
  else 
  {
    $request = "GET $query HTTP/1.1\r\n";
    $request .= "Host: $url[host]\r\n";
    $request .= "Connection: Keep-Alive\r\n";
    if($cookie) $request.="Cookie:   $cookie\n";
    $request.="\r\n";
    fwrite($fp,$request);

    while (!feof($fp)) 
    {
      $result .= fgets($fp, 128);
   }

   fclose($fp);
   return $result;
  }
}

function HTTP_Post($URL,$data,$cookie, $referrer="")
{
  $URL_Info=parse_url($URL);
  if($referrer=="") $referrer="111";
  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.="Connection: Keep-Alive\n";
  $request.="Cookie:   $cookie\n";
  $request.="\n";
  $request.=$data_string."\n";
  $fp = fsockopen($URL_Info["host"],$URL_Info["port"]);
  fputs($fp, $request);
  while(!feof($fp)) 
  {
    $result .= fgets($fp, 1024);
  }
  fclose($fp);
  return $result;
}

函数 GET 和 POST 与 fsocket。 欢迎任何想法

谢谢

编辑 1:

谢谢你,但它不起作用。我试了 20 次,但是这个网站不工作...

出现浏览器消息:Atenção: Acesso negado!支持选择算法参数咨询。

警告:访问被拒绝!请选择一个查询参数。

我的代码和你的代码

function POST()
{
  $postdata = http_build_query(
    array(
          'CNPJ' => '02340534000192',
          'consulta' => 'OK',
          'vazio' => '',
          'CPF' => '',
          'IE' => '',
          'razaosocial' => ''
         ));

   $headers = array(
                         'Content-type: application/x-www-form-urlencoded',
                         'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
                        );

  $opts = array('http' =>
    array(
          'method'  => 'POST',
          'header'  => implode("\r\n", $headers),
          'content' => $postdata,
         ));

  $context  = stream_context_create($opts);
  $result = file_get_contents('http://www.sefaz.pe.gov.br/sintegra/consulta/consulta.asp', false, $context);
  return $result;
}

【问题讨论】:

  • 你说“不行”,怎么不行?
  • 我不知道,只有这个网站
  • 这是您投诉的特定网站调用,而不是问题本身。

标签: php curl file-get-contents


【解决方案1】:

我认为您可以为 GET 执行 file_get_contentshttp://php.net/manual/en/context.http.phpPOST

来自 php.net 网站的示例

$postdata = http_build_query(
    array(
        'var1' => 'some content',
        'var2' => 'doh'
    )
);
$opts = array('http' =>
    array(
        'method'  => 'POST',
        'header'  => 'Content-type: application/x-www-form-urlencoded',
        'content' => $postdata
    )
);
$context  = stream_context_create($opts);
$result = file_get_contents('http://example.com/submit.php', false, $context);

【讨论】:

    【解决方案2】:

    您的 IP 可能被网站屏蔽了。

    【讨论】:

      猜你喜欢
      • 2015-10-31
      • 1970-01-01
      • 2014-02-11
      • 1970-01-01
      • 2018-06-13
      • 1970-01-01
      • 1970-01-01
      • 2020-06-21
      相关资源
      最近更新 更多