2014-12-03 3 views
1

나는 PHP와 cURL을 사용하여별로 좋지 않다. 보통 자바 스크립트 나 C#으로 호출한다. 그러나 나는 wordpress로 작업하고 있으므로 C#은 가능하지 않다. apikey를 호출 url과 함께 사용한다. 그래서 나는 이것에 대해 약간의 도움이 될지 궁금해하고있었습니다. 자바 스크립트에서 호출이 될 것입니다.PHP 컬 헤더

 var forecastOptions = { 
     "cache": false, 
     "dataType": "jsonp", 
     "url": callSite 
    }; 
    var forecastRequest = $.ajax(forecastOptions); 

내 가독성을 위해이 방법을 사용합니다. 나는 또한 그래서 내가 지금 무슨이다 "allow_url_fopen을"

편집

를 켜려고하지 않습니다.

<?php 
     $api_key = 'xxxxxxxxxx'; 
     $latitude = "40.5122"; 
     $longitude = "-88.9886"; 
     $API_ENDPOINT = 'https://api.forecast.io/forecast/'; 

     $request_url = $API_ENDPOINT . 
     $api_key . '/' . 
     $latitude . ',' . $longitude; 

     $ch = curl_init(); 

     $headers = array(
      'Content-Type: application/json', 
      'Accept: application/json' 
     ); 
     curl_setopt($ch, CURLOPT_URL, $request_url); 
     curl_setopt($ch, CURLOPT_HEADER, $headers); 

     $result = curl_exec($ch); 

     $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); 

     curl_close($ch); 


     $content = json_decode($result, true); 

     if(empty($content)){ 
      print_r("Empty"); 
     } 

    ?> 

$ 콘텐츠가 비어 있다고 알려줍니다. 나는 무엇이 있는지 놓치고있다.

답변

0

this page을 참조하면 PHP의 모든 cURL 함수에 대한 문서를 얻을 수 있습니다. 또한 JS의 cURL에 익숙하지 않아 옵션에 맞는 방법을 모르지만 PHP의 cURL 옵션은 모두 here입니다.

예를 들어, 그것은 다음과 비슷한 모습이 될 것입니다

// create a new cURL resource 
$ch = curl_init(); 

// set URL and other appropriate options 
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/"); 
curl_setopt($ch, CURLOPT_HEADER, 0); 

// grab URL and pass it to the browser 
curl_exec($ch); 

// close cURL resource, and free up system resources 
curl_close($ch); 
2

미스터 도드는 정확하지만 JSONP를 사용하면 크로스 사이트 요청을하고 있다고 제안한다. PHP는 일반적으로 서버 측에서 실행되기 때문에 걱정할 필요가 없습니다. 사용하는 url이 JSON을 반환하는지 확인해야합니다. 당신이 요청을 실행하면

$headers = array(
    'Content-Type: application/json', 
    'Accept: application/json' 
); 

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 

, 당신은이 같은 응답과 HTTP 상태를 검색 할 수 있습니다 : 당신은이 같은 요청에 헤더를 추가 할 수 있습니다 내 코드를 업데이트 한

// Get the result 
$result = curl_exec($ch); 

// Get the status 
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); 

// Close the session 
curl_close($ch); 

//Parse the JSON 
$result_arr = json_decode($result, true); 
+0

을하지만, 나는 요청에서 아무것도 얻지 못하고있다. 내 코드에서 뭔가 빠졌습니까? Forecast.io api에서 당기려고합니다. – pormus

+0

브라우저에서 사용중인 URL을 시도하고 아무 것도 반환하는지 확인해야합니다. 위에서 '$ httpCode'의 HTTP 상태도 확인해야합니다. –

+0

나는 print_r ($ httpCode)을했고 나에게 0을 주었다. 나는 url을 호출하여 그것을 브라우저 url에 넣었다. 그 URL이 올바른 URL인지를 확인하기 위해 $ URL 대신에 그 url을 붙여 넣었다. request_url. 그리고 나는 여전히 같은 결과를 얻고 있습니다. – pormus