2015-06-25 20 views
5

yılında curl kullanarak bir liste için görevler şimdi biraz arama edilmiştir ve Wunderlist uç noktasını kullanarak tek listeden Görevler genel bir bakış alamayan alırım Listeler, Klasörler alabilir ve Liste, Klasörler, Görevler oluşturabilirim, böylece iyi çalışır. Ama Görevleri bir listeden nasıl alabilirim? Bilmiyorum, çünkü AncakWunderlist Görevler nasıl php

{"error":{"type":"missing_parameter","translation_key":"api_error_missing_params","message":"Missing parameter.","title":["required"]}} 

, bir başlık eklemek istemiyorum: Ben bu hata mesajını almak bir GET yöntemi yaptığınızda https://developer.wunderlist.com/documentation/endpoints/task

: burada bulduğu belgelere yorumlamaya çalıştı yeni bir görev oluşturmak istiyorum, sadece bu listenin görevlerini geri istiyorum.

Burada yanlış olan ne yapıyorum?

İşte şimdiye kadar benim kodudur:

function doCall($endPoint, $parameters = array(), $method = 'GET') 
{ 
    // check if curl is available 
    if (!function_exists('curl_init')) { 
     print "This method requires cURL (http://php.net/curl), it seems like the extension isn't installed. ".__LINE__; 
     exit(); 
    } 
    //prepare content 
    $parametersdata = json_encode($parameters); 

    // define url 
    $url = 'https://a.wunderlist.com/api/v1/' . $endPoint; 

    // init curl 
    $curl = curl_init(); 
    // set options 
    curl_setopt($curl, CURLOPT_URL, $url); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($curl, CURLOPT_TIMEOUT, 10); 
    // init headers 
    $headers = array(); 

    // add to header 
    $headers[] = 'X-Access-Token: XXX'; 
    $headers[] = 'X-Client-ID: XXX'; 

    // method is POST, used for login or inserts 
    if ($method == 'POST') { 
     // define post method 
     curl_setopt($curl, CURLOPT_POST, 1); 
    // method is DELETE 
    } elseif ($method == 'DELETE') { 
     curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'DELETE'); 
    } else { 
     curl_setopt($curl, CURLOPT_HTTPGET, 1); 
    } 

    // parameters are set 
    if (!empty($parameters)) { 
     $headers[] = 'Content-Type: application/json'; 
     $headers[] = 'Content-Length: ' . strlen($parametersdata); 
     curl_setopt($curl, CURLOPT_POSTFIELDS, $parametersdata); 
    } 
    // define headers with the request 
    if (!empty($headers)) { 
     // add headers 
     curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); 
    } 
    // execute 
    $response = curl_exec($curl); 
    // debug is on 
    if (true) { 
     echo $method." ".$url . '<br/><pre>'; 
     print"\n--headers--\n"; 
     print_r($headers); 
     print"\n--parameters--\n"; 
     print_r($parameters); 
     print"\n--parametersdata--\n"; 
     print_r($parametersdata); 
     print"\n--response--\n"; 
     print_r($response); 
     echo '</pre><br/><br/>'; 
    } 
    // get HTTP response code 
    $httpCode = (int) curl_getinfo($curl, CURLINFO_HTTP_CODE); 
    // close 
    curl_close($curl); 
    // response is empty or false 
    if (empty($response)) { 
     //throw new Exception('Error: ' . $response); 
     print "Error: ". $response." ".__LINE__; 
    } 
    // init result 
    $result = false; 
    // successfull response 
    if (($httpCode == 200) || ($httpCode == 201)) { 
     $result = json_decode($response, true); 
    } 
    // return 
    return $result; 
} 

$listid = 123; 
$url = 'tasks'; 
$tasks = doCall($url,array('list_id' => $listid), 'GET'); 
echo $tasks; 

- DÜZENLEME EK --- Ben de herkes merak durumunda bu varyantları çalıştık. Hepsi aynı hatayı "bad_request" Rotem tarafından işaret edildiği gibi

GET a.wunderlist.com/api/v1/tasks{"list_id":"141329591"} 
GET a.wunderlist.com/api/v1/tasks{"list_id":141329591} 
GET a.wunderlist.com/api/v1/tasks/{"list_id":"141329591"} 
+0

123 kullanmanın erişebilir ve ideal ardından çeki düzen vermek için gereksiz yorumu silmek bir list_id kullandı . Teşekkürler! – halfer

+0

Bu son nokta için, list_id öğesini, posta verisi yerine bir querystring parametresi olarak göndermeniz gerekir. Bunun yerine https://a.wunderlist.com/api/v1/tasks?list_id=XXX adresini deneyin. –

cevap

8

, sen CURLOPT_POSTFIELDS olarak $parameters dizi ekleyerek kullandığınız verir. Adından da anlaşılacağı gibi, bu sadece http POST istekleri içindir.

Parametreleri, sorgu paramları için sorgu paramları olarak $url'da geçirip null geçirerek, örneğiniz benim için çalışır.

$listid = 123; 
$url = 'tasks?list_id=123'; 
$tasks = doCall($url,null,'GET'); 
echo $tasks; 

Not: Ben (onlar düzenlenebilir)^Söz konusu ek materyal ekleyiniz yerine

+1

Mantıklı ve basit, bunu nasıl özleyebilirim. Teşekkür ederim! –

İlgili konular