2014-03-04 2 views
1

https 프로토콜을 사용하는 서버 (예 : https://site.com/page)의 웹 페이지에서 데이터를 가져와야합니다. 오류에 대한 정보는 없음과 file_get_contents :PHP가 포함 된 https 서버에 연결

$POSTData = array(''); 
$context = stream_context_create(array(
    'http' => array(
    //'ignore_errors' => true, 
    'user_agent' => "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36", 
    'header' => "User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit/522.11.1 (KHTML, like Gecko) Version/3.0.3 Safari/522.12.1", 
    'request_fulluri' => true, 
    'method' => 'POST', 
    'content' => http_build_query($POSTData), 
    ) 
)); 
$pageHTML = file_get_contents("https://site.com/page", FALSE, $context); 
echo $pageHTML; 

그러나이 경고를주고, 작동하지 않는 것 : 여기에서 PHP의 내가 사용하고 코드입니다. 무슨 일이 벌어 질 수 있으며 어떻게하면 서버에 연결하여 페이지를 얻을 수 있습니까?

EDIT : 답변 해 주신 모든 분들께 고마워요. 제 문제는 내가 HTTP 프록시를 사용하고 있다는 것입니다. HTTP 프록시를 사용했기 때문에 코드에서 제거하여 문제가 될 수 없다고 생각하여 혼동하지 않도록했습니다. . 당신이 이미하지 않은 경우

stream_context_create(array(
    'https' => array(
    //...etc 
+0

오류 메시지의 정확한 내용은 무엇입니까? – thatidiotguy

답변

1

Have a look at cURL : 코드는 HTTP 프록시를 통해 HTTPS 페이지를로드하기 위해, 나는 다음과 같이 사용 stream_context_create를 수정했습니다. cURL을 사용하면 원격으로 웹 페이지/API/파일에 액세스하여 서버에 다운로드 할 수 있습니다. curl_setopt() 함수는 같은

$file = fopen("some/file/directory/file.ext", w); 
$ch = curl_init("https://site.com/page"); 
curl_setopt($ch, CURLOPT_FILE, $file); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //false to disable the cert check if needed 

$data = curl_exec($ch); 
curl_close($ch); 
fclose($file); 

뭔가 원하는 파일을 다운로드 한 다음 HTTPS 서버에 연결 할 수 있도록 원격 서버의 인증서를 확인할지 여부를 지정할 수 있습니다. 서버에 유효한 인증서가있는 경우 (즉, 유효한 인증서가없는 서버에서 개발하지 않는 경우) cURL은 기본적으로 인증서 확인을 시도하므로 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 행을 생략 할 수 있습니다.

cURL도 the curl_getinfo() function으로되어있어 프로그램을 디버그하는 데 가장 최근에 처리 된 전송에 대한 세부 정보를 제공합니다.