2011-09-12 2 views
0

저는 프로그래밍 방식으로 주석을 추가하거나 삭제하기 위해 Googgle의 사용자 정의 검색 엔진 API를 사용했습니다. 나는 그들의 문서와 다른 사람들의 조언을 아주 가깝게 따라 다닌 것처럼 느낀다. HTTP 400 오류 '잘못된 요청'을 피할 수 없습니다. 내 코드는 다음과 같습니다.Google CSE PHP CURL 프로그래밍 방식으로 주석을 추가/삭제하기위한 구현

$url = "http://www.google.com/cse/api/default/annotations/"; 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url);  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);  


curl_setopt ($ch, CURLOPT_HTTPHEADER, Array(
    "Authorization: GoogleLogin auth='DQAAAMI......n9dGUyA'", 
    "Content-Type: text/xml" 
)); 

curl_setopt($ch, CURLOPT_POST, 1); 

$data = '<?xml version="1.0"?>'.chr(10); 
$data .= '<Batch>'.chr(10); 
$data .= chr(9).'<Add>'.chr(10); 
$data .= chr(9). chr(9).'<Annotations>'.chr(10); 
$data .= chr(9). chr(9). chr(9).'<Annotation about=\"\">'.chr(10); 
$data .= chr(9).chr(9). chr(9). chr(9).'<Label name=\"my_engine\"/>'.chr(10); 
$data .= chr(9). chr(9). chr(9).'</Annotation>'.chr(10); 
$data .= chr(9). chr(9).'</Annotations>'.chr(10); 
$data .= chr(9).'</Add>'.chr(10); 
$data .= '</Batch>'.chr(10);  

curl_setopt($ch, CURLOPT_POSTFIELDS, $data);  

$ result = curl_exec ($ ch);

if (curl_errno($ch)) { 
     $result = 'cURL ERROR -> ' . curl_errno($ch) . ': ' . curl_error($ch); 
} else { 
    $returnCode = (int)curl_getinfo($ch, CURLINFO_HTTP_CODE); 
    echo $returnCode."<br/>"; 
    switch($returnCode){ 
     case 200: 
      break; 
     default: 
      $result = 'HTTP ERROR -> ' . $returnCode; 
      break; 
    } 
} 
curl_close($ch); 
echo $result; 

아무도 나를 도와 또는 적어도 내가 첫째로, 당신은 Google에 전송 된 XML 데이터 그게 전부를 인코딩해야합니다,

답변

0

좋아 매우 감사하게 될 것입니다 올바른 방향으로 날 조종 할 수 있습니다. 둘째로 모든 탭과 포맷을 제거해야하며 수신 엔진은 그와 관련이 없습니다.

그래서이 시도 :

$data = '<?xml version="1.0"?><Batch><Add><Annotations><Annotation about=\"\"><Label name=\"my_engine\"/></Annotation></Annotations></Add></Batch>';  
$data = urlencode($data); // encode the string to send via http 

내가 그건 당신이 가야한다고 생각합니다. 다른 오류를 발견 할 수도 있지만이 오류는 400 오류를 해결합니다.

관련 문제