2014-06-14 3 views
0

curl 라이브러리를 사용하여 XML을 가져 오지만 호스트와의 연결 오류가 발생합니다. 다음은 내 코드입니다. 자격 증명을 삭제했습니다.CURL을 사용한 XML 요청

$url="https://interface.callport.net:8080/P-RVWR-drcm01-cti/call/2142100570"; 

$curl_post_data = array(
    "query_type" => 'caller_info', 
    "dnis" => '8883874944', 
); 

$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 
curl_setopt($ch, CURLOPT_USERPWD, base64_encode('[email protected]:color43t')); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $curl_post_data); 

$result = curl_exec($ch); 

if(curl_errno($ch)) 
{ 
    echo 'Curl error: ' . curl_error($ch); 
} 
else 
{  
    echo $result; 
} 

curl_close($ch); 

답변

0

이것은 일반적으로이 문제를 해결합니다. cURL은 인증서를 확인하지 않습니다.

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 

[편집] 나는 문제를 해결했다. 위에서 설명한대로 SSL을 먼저 수행 한 다음 사용자 이름과 암호의 base64 인코딩을 제거하여 POST 대신 GET을 통해 데이터를 보내고 헤더를 마지막으로 수정했습니다.

$url="https://interface.callport.net:8080/P-RVWR-drcm01-cti/call/2142100570?query_type=caller_info&dnis=8883874944"; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/xml')); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 
curl_setopt($ch, CURLOPT_USERPWD, '[email protected]:color43t'); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
+0

위 변수를 추가했지만 성공하지는 않았습니다. –

+0

이제 답을 좀 더 추가했습니다. 적어도 여기서는 효과가있는 것 같습니다. – Karl

+0

친애하는 Karl, 노력을 감사하지만 왜 같은 오류가 발생하는지 확신 할 수 없습니다. Curl 오류 : 호스트에 연결할 수 없습니다. 내 서버 중 두 개에서 요청을 보냈지 만 intelemedia에서 내 링크를 흰색 목록에 표시해야하는 것처럼 보입니다. –