2012-03-16 3 views
0

안녕하세요 저는 Expedias api hotel 시스템을 사용하려고 노력하고 있습니다. 제대로 작동하지 않는 것 같습니다. 여기에 내 코드가 있는데,이 오류가 발생합니다 :php xml http 요청 반환 오류 (403)

<h1>403 Developer Inactive</h1> 

내가 뭘 잘못하고 있는지 잘 모르겠다. 어떤 도움이라도 대단히 감사하겠습니다. 당신의 apiKey에 값이 잘못된 무효 또는 비활성화 되었기 때문에

<?php 
$ipad = $_SERVER['REMOTE_ADDR']; 
$usera = $_SERVER['HTTP_USER_AGENT']; 

$url = "http://api.ean.com/ean-services/rs/hotel/v3/info?'minorRev=5 
&cid=55505 
&apiKey=6spskr4y2sw4sh3vxkfg8cbg 
&customerIpAddress = ".$ipad." 
&customerUserAgent =".$usera." 
&locale=en_US 
&currencyCode=USD 
&xml=<HotelInformationRequest> 
<hotelId>122212</hotelId> 
<options>HOTEL_SUMMARY</options> 
</HotelInformationRequest>"; 

class cURL { 

var $headers; 
var $user_agent; 
var $compression; 
var $cookie_file; 
var $proxy; 



function cURL($cookies=TRUE,$cookie='cookies.txt',$compression='gzip',$proxy=''){ 

$this->headers[] = 'Accept: image/gif, image/x-bitmap, image/jpeg, image/pjpeg'; 
$this->headers[] = 'Connection: Keep-Alive'; 
$this->headers[] = 'Content-type: application/x-www-form-urlencoded;charset=UTF-8'; 
$this->user_agent = 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)'; 
$this->compression=$compression; 
$this->proxy=$proxy; 
$this->cookies=$cookies; 

if ($this->cookies == TRUE) $this->cookie($cookie); 
} 


function cookie($cookie_file){ 
if (file_exists($cookie_file)){ 
$this->cookie_file=$cookie_file; 
} else { 
fopen($cookie_file,'w') or $this->error('The cookie file could not be opened. Make sure this directory has the correct permissions'); 
$this->cookie_file=$cookie_file; 
fclose($this->cookie_file); 
} 
} 


function get($url) { 
$process = curl_init($url); 
curl_setopt($process, CURLOPT_HTTPHEADER, $this->headers); 
curl_setopt($process, CURLOPT_HEADER, 1); 
curl_setopt($process, CURLOPT_USERAGENT, $this->user_agent); 
if ($this->cookies == TRUE) curl_setopt($process, CURLOPT_COOKIEFILE, $this->cookie_file); 
if ($this->cookies == TRUE) curl_setopt($process, CURLOPT_COOKIEJAR, $this->cookie_file); 
curl_setopt($process,CURLOPT_ENCODING , $this->compression); 
curl_setopt($process, CURLOPT_TIMEOUT, 30); 
if ($this->proxy) curl_setopt($cUrl, CURLOPT_PROXY, 'proxy_ip:proxy_port'); 
curl_setopt($process, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($process, CURLOPT_FOLLOWLOCATION, 1); 
$return = curl_exec($process); 
curl_close($process); 
return $return; 
} 


function post($url,$data) { 
$process = curl_init($url); 
curl_setopt($process, CURLOPT_HTTPHEADER, $this->headers); 
curl_setopt($process, CURLOPT_HEADER, 0); 
curl_setopt($process, CURLOPT_USERAGENT, $this->user_agent); 
if ($this->cookies == TRUE) curl_setopt($process, CURLOPT_COOKIEFILE, $this->cookie_file); 
if ($this->cookies == TRUE) curl_setopt($process, CURLOPT_COOKIEJAR, $this->cookie_file); 
curl_setopt($process, CURLOPT_ENCODING , $this->compression); 
curl_setopt($process, CURLOPT_TIMEOUT, 30); 
if ($this->proxy) curl_setopt($process, CURLOPT_PROXY, $this->proxy); 
curl_setopt($process, CURLOPT_POSTFIELDS, $data); 
curl_setopt($process, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($process, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($process, CURLOPT_POST, 1); 
$return = curl_exec($process); 
curl_close($process); 
return $return; 
} 

function error($error) { 
echo "<center><div style='width:500px;border: 3px solid #FFEEFF; padding: 3px; background-color: #FFDDFF;font-family: verdana; font-size: 10px'><b>cURL Error</b><br>$error</div></center>"; 
die; 
} 


function extractCustomHeader($start,$end,$header) { 
$pattern = '/'. $start .'(.*?)'. $end .'/'; 
if (preg_match($pattern, $header, $result)) { 
return $result[1]; 
} else { 
return false; 
} 
} 
} 

$cc = new cURL(); 

$output = $cc->post($url,$postdata); 
echo $output; 
?> 

답변

0

당신이 403 개발자 비활성 오류가 발생 할 이유 가능성이 가장 높은 이유는 : 여기 내 코드입니다. 계정을 이미 활성화했으며 제공된 API 키는 지원팀에 문의하십시오.