2012-11-07 3 views
2

JQuery $ .getJSON 함수에서 webservice를 호출하면 정상적으로 작동합니다.매개 변수와 콜백을 사용하여 PHP에서 JSON 웹 서비스를 호출하려면 어떻게해야합니까?

var p = { 
     'field1': 'value1', 
     'field2': 'value2', 
     'field3': 'value3' 
    }; 

    $.getJSON('https://service:[email protected]/service/search?callback=?', p, function(data) { 
    if (data[0]) {  
     // print results 
    } else { 
     // no results found 
    } 
}); 

PHP와 CURL에서 연결을 시도하고 있지만 작동하지 않지만 항상 false를 반환합니다.

// FIRST

$params = array( 'field1' => 'value1', 'field2' => 'value2', 'field3'=> 'value3'); 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_URL, 'https://service:[email protected]/service/search?callback=?'); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $params); 
$result = curl_exec($ch); // return false instead of my JSON 

가 // SECOND 내가 잘못 뭐하는 거지

$data_string = json_encode($params);                     
    $ch = curl_init('https://https://service:[email protected]/service/search?callback=?');                  
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                  
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);                 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                  
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(                   
    'Content-Type: application/json',                     
    'Content-Length: ' . strlen($data_string))                  
);                             

    $result2 = curl_exec($ch); //return false instead of my JSON 

TRY TRY?

많은 감사,

+0

은 jsonp 또는 json입니까? 반환되는 형식은 두 경우 모두 다릅니다 – Landon

+0

.getJSON은 get 요청입니다. PHP에서는 게시물 요청을 사용하고 있습니다. 또한 POSTFIELDS에서는 연관 배열을 사용하지만 두 번째 시도에서는 문자열 만 제공합니다. – Codeguy007

답변

0

jquery 요청은 GET을 사용하고 있습니다. 귀하가 작성한 컬 코드가 게시물 요청을 보내는 것으로 보입니다 (저는 컬 전문가가 아닙니다). 분명히받는 서버는 여러 유형의 요청을 다르게 처리하므로 곱슬 거리기를 통해 보내야하고 도움이 될 것입니다. 이 당신의 코드를 변경

0

시도 :

$params = array( 'field1' => 'value1', 'field2' => 'value2', 'field3'=> 'value3'); 

$data_string = implode('&',$params); 
//NB: you may need to urlencode the each of your params 

$ch = curl_init('https://https://service:[email protected]/service/search? callback=?&' .$data_string);                  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  
$result2 = curl_exec($ch); 

테스트되지 않은 코드가 도움이되기를 바랍니다.

0

getJSON은 GET 요청을 전송하므로 params 배열을 http_build_query가있는 문자열로 변환하고 쿼리에 추가해야합니다. HTTPS를 사용하여 데이터를 요청할 때 CURL을 CURLOPT_CAINFO/CURLOPT_CAPATH를 사용하여 올바른 인증 코드로 지정해야합니다. 코드의 유효성 검사 만 무시합니다.

$params = array( 'field1' => 'value1', 'field2' => 'value2', 'field3'=> 'value3'); 
$url = 'https://service:[email protected]/service/search?callback=?' . http_build_query($params); 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch , CURLOPT_SSL_VERIFYPEER , false); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

$result = curl_exec($ch); 
if($result === FALSE) { 
    echo curl_error($ch); 
} 
관련 문제