2014-01-14 3 views
0

Я пытался несколько раз освободить POST и GET на этом сайте http://www.sefaz.pe.gov.br/sintegra, но это не распространяется работаPOST и GET без Curl PHP

// 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 и локон тоже ... как без успеха

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. любые идеи приветствуются

Благодаря

EDIT 1:

Спасибо, но это не распространяется работу. Я пробовал 20 раз, но этот сайт не работает ...

Появляется сообщение в браузере: Atenção: Acesso negado! Поощряйте selecionar algum parâmetro de consulta.

Предостережение: Доступ запрещен! Выберите параметр запроса.

мой код с кодом

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; 
} 
+0

Вы говорите: «Это не работает», как это не работает? –

+0

Я не знаю, только этот сайт – user3192562

+0

- это конкретный сайт, на который вы жалуетесь, а не сам вопрос. – user241221

ответ

0

Ваш IP является вероятно, заблокирован веб-сайтом.

2

Я думаю, что вы можете сделать file_get_contents для GET или http://php.net/manual/en/context.http.php для POST

Пример с сайта 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);