2012-01-04 2 views
1

다른 페이지에서 JSON 객체를 가져 와서 조각과 값을 내 PHP 문서 변수로 나누어 페이지에 채 웁니다.php, JSON : PHP에서 편집 할 수없는 cURL 객체

curl_exec 호출이 JSON 개체를 인쇄하는 동안 그 지점부터 아무 것도 할 수 없다는 문제가 있습니다. 여기

$json_url = "localhost:8080/query"; 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, false); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); 
curl_setopt($ch, CURLOPT_URL, $json_url); 
curl_setopt($ch, CURLOPT_USERPWD, $user.":".$pass); 
$result = json_decode(curl_exec($ch)); 
var_dump ($result); 

$curl_errno = curl_errno($ch); 
$curl_error = curl_error($ch); 

curl_close($ch); 

// ON SUCCESS 

$json_a = $result[10]; 
var_dump ($json_a); 

결과의 조각의 샘플입니다 : 다음은 내 코드입니다

["4"]=> array(2) { [0]=> int(1325003843) [1]=> array(2) { [0]=> int(47) [1]=> array(17) { [0]=> array(2) { [0]=> int(0) [1]=> int(1) } [1]=> array(2) { [0]=> int(17) [1]=> int(44) } [2]=> array(2) { [0]=> int(3) [1]=> int(4) } [3]=> array(2) { [0]=> int(3) [1]=> int(4) } [4]=> array(2) { [0]=> int(3) [1]=> int(4) } [5]=> array(2) { [0]=> int(3) [1]=> int(4) } [6]=> array(2) { [0]=> int(3) [1]=> int(4) } [7]=> array(2) { [0]=> int(3) [1]=> int(4) } [8]=> array(2) { [0]=> int(3) [1]=> int(4) } [9]=> array(2) { [0]=> int(3) [1]=> int(4) } [10]=> array(2) { [0]=> int(3) [1]=> int(4) } [11]=> array(2) { [0]=> int(3) [1]=> int(4) } [12]=> array(2) { [0]=> int(3) [1]=> int(4) } [13]=> array(2) { [0]=> int(2) [1]=> int(3) } [14]=> array(2) { [0]=> int(2) [1]=> int(3) } [15]=> array(2) { [0]=> int(2) [1]=> int(3) } [16]=> array(2) { [0]=> int(2) [1]=> int(3) } } } } 

위해서 var_dump ($ 결과); int (1)을 반환하고 다른 var_dump는 NULL을 반환합니다. curl_exec은 실제로 JSON 객체를 출력하므로 적어도 그것을 잡아 먹는다는 것을 알고 있습니다. 어떤 도움을 주셔서 감사합니다.

답변

1

또한 단지, ​​즉

$json_url = "localhost:8080/query"; 
// $protocol should be the protocol used, ie. 'ftp://', 'http://' or 'https://' 
// to produce an URL like 'ftp://user:[email protected]:8080/query' 
$result = file_get_contents($protocol . $user.":".urlencode($pass) . '@' . $json_url); 

if($result !== false) { // ON SUCCESS 
    $result = json_decode($result, true); 
    var_dump ($result); 

    if(isset($result[10])) { // If index 10 of $result exists 
    $json_a = $result[10]; 
    var_dump ($json_a); 
    } 
} else { 
    // error occured 
} 
+0

정말 고마워요! 위 코드 전체를 대체 할 수 있습니까? 또한 $ 프로토콜은 무엇입니까? 고마워요. 내게 다른 정보가 필요한지 알려주세요. – prosborne

+0

'$ json_url'에 포함 된 내용에 따라 다릅니다. var_dumps와 함께 위의 코드에이 코드를 포함 할 수 있다면 적절하게 응답을 업데이트 할 것입니다. – Flygenring

+0

좋아요, 질문을 업데이트 한 다음 결과의 일부를 추가했습니다. 그것은 정말 거대한 대상이므로 전체 내용을 포함하기가 어려울 것입니다 ... – prosborne

3

CURLOPT_RETURNTRANSFER를 false로 설정하면 curl_exec는 true 또는 false 만 반환합니다. CURLOPT_RETURNTRANSFER를 true로 설정하면 curl_exec이 결과를 반환해야합니다. returntransfer이 false 인 경우

+0

같은 것을 할 수있는, 컬 의지를 출력하는 대신 스크립트를 반환하는 클라이언트에 결과. –

+0

좋아, 정말 고마워! 이제 $ ch를 디코딩하면 첫 번째 var_dump가 "array (2) .."를 출력 한 다음 JSON 객체를 배열로 출력합니다. 하지만 두 번째 var_dump는 여전히 Null로 표시됩니다. – prosborne

+0

첫 번째 var_dump에서 출력을 게시 할 수 있습니까? '$ result'는 두 개의 항목 만있는 배열이므로 참조하는 인덱스는 null을 반환 할 것입니다. – Flygenring

관련 문제