2014-01-17 7 views
0

내 문제가 있습니다 GET fsockopen을 사용하여 POST를 수행 한 후
쿠키를 보내지 만 성공하지 못했습니다. >POST
내가 HTTP/1.1 302 개체 이동 수신 - -fsockopen - POST 및 GET PHP

나는 HTTP/1.1 302 개체 이동 받게> 저에게,하지만 난 HTTP/1.1 200 OK

을받을 것으로 예상

내 코드 :

사용법 : $ this-> (읽기);

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

아무도 도와 줄 수 있습니까?

감사합니다.

답변

0

HTTP/1.1 302 개체 이동이란 해당 위치에서 임시로 페이지가 이동한다는 의미입니다. 요청을 다시 확인하십시오. 브라우저에서 요청 페이지를 열어보십시오.

+0

HTTP 200을 수신 할 수 없습니다. 목표는 200이지만, 실행하기 전까지 만 30239 ... – user3192562

+0

을 열어서 크롬을 열어보고 Ctrl + Shift + I를 누른 다음 필요한 페이지를 엽니 다. 헤더가 동일하면 페이지가 임시 이동합니다. – RussianVodka