8710 sujets

Développement web côté serveur, CMS

bonjour,
j'ai un soucis avec une API REST json.
je ne parvient pas a poster du contenu via une fonction qui encode les informations directement dans l'URL de cette facon.

https://www.dacast.com/backend/api/live/0?bid=26708&apikey=monAPIKey&title=blablabla&online=0&stream_type=1&stream_category=20&publish_on_dacast=1

je peux pas vous fournir mon API key pour des raisons evidente de securite (negociable en MP pour une duree limitee mais elle serra changee une fois les tests passee ), sachez cependant qu'il ne manque pas grand chose pour que ca fonctionne, j'avai reussi a le debloquer une premiere fois, le probleme c'est que dans l'euforie j'ai recasser mon code le lendemain et j'avais aucune backup bien evidement ><

j'ai comparer ma trame avec celle generer par un testeur d'API interne (swagger) qui utilise les meme fonctions (je ne peux pas vous le linker il faut etre logger pour pouvoir l'utiliser ....)

Bon je sais que c'est un peu compliquee de debugger sans la clef, mais ne serai ce que me donner une piste pour debuger mon probleme ca serai deja bien !


pour info mon script me retourne ceci

https://www.dacast.com/backend/api/live/?bid=26708&apikey=mon API key&title=plop&description=plap&online=1&stream_type=1&stream_category=20&publish_on_dacast=1Array ( Smiley url => https://www.dacast.com/backend/api/live/?bid=26708&apikey=mon API key&title=plop&description=plap&online=1&stream_type=1&stream_category=20&publish_on_dacast=1 [content_type] => [http_code] => 0 [header_size] => 0 [request_size] => 0 Smiley filetime => -1 [ssl_verify_result] => 0 [redirect_count] => 0 [total_time] => 0.187 [namelookup_time] => 0.093 [connect_time] => 0.187 [pretransfer_time] => 0 [size_upload] => 0 [size_download] => 0 [speed_download] => 0 [speed_upload] => 0 [download_content_length] => -1 [upload_content_length] => -1 [starttransfer_time] => 0 [redirect_time] => 0 Smiley certinfo => Array ( ) ) NULL

si ca peux vous aider !

merci !

Levure



<?php

define("APIKEY", "monAPIkey");
define("URL", "https://www.dacast.com/backend/api/live");
define("BID", "26708");

main();

function main() {

    $live_id = '0';
    $title = urlencode("plop");
    $description = urlencode("plap");
    $online = urlencode('1');
    $stream_type = urlencode('1');
    $stream_category = urlencode('20');
    $publish_on_dacast = urlencode('1');
    /*
      $data = curlWrap("/" . $live_id . "?bid=" . BID . "&apikey=" . APIKEY
      . "&title=" . $title . "&description=" . $description . "&online=" . $online
      . "&stream_type=" . $stream_type . "&stream_category=" . $stream_category
      . "&publish_on_dacast=" . $publish_on_dacast, NULL, "POST");

     */
    curlWrap("/0?bid=26708&apikey=7c70028b237d85cda0cc&title=" . $title . "&description=" . $description . "&online=" . $online . "&stream_type=" . $stream_type . "&stream_category=" . $stream_category . "&publish_on_dacast=" . $publish_on_dacast, NULL, "POST");


    if ($data->error->message != null) {
        echo "<p>Error : " . $data->error->message . "</p>";
    } else {
        echo '<br>' . var_dump($data) . '<br>';
    }
}

function curlWrap($url, $json, $action) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
    curl_setopt($ch, CURLOPT_URL, URL . $url);
    curl_setopt($ch, CURLOPT_CAINFO, "cacert.pem");
    curl_setopt($ch, CURLOPT_VERBOSE, 1);
    echo URL . $url;
    switch ($action) {
        case "POST":
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
            curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
            break;
        case "GET":
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
            break;
        case "PUT":
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
            curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
            break;
        case "DELETE":
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
            break;
        default:
            break;
    }

    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json'));
    curl_setopt($ch, CURLOPT_USERAGENT, "MozillaXYZ/1.0");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
   
    $output = curl_exec($ch);
   
    print_r(curl_getinfo($ch));
    
    curl_close($ch);

    $decoded = json_decode($output);
    return $decoded;
}
?>

Plop ! pour ceux que ca interesse, j'ai trouver la solution, je sais pas trop comment, comme la fois precedente, mais bon ca marche !

merci d'avoir pris le temps de me lire !

<?php

define("APIKEY", "YourAPIKEY");
define("URL", "https://www.dacast.com/backend/api/live");
define("BID", "YourBroadcasterID");

main();

function main() {

    $title = urlencode("live auto 1");
    $description = urlencode("auto generate live");
    $online = urlencode('0');
    $stream_type = urlencode('1');
    $stream_category = urlencode('20');
    $publish_on_dacast = urlencode('1');

    $data = curlWrap("/0?bid=26708&apikey=7c70028b237d85cda0cc&title=" . $title . "&description=" . $description . "&online=" . $online . "&stream_type=" . $stream_type . "&stream_category=" . $stream_category . "&publish_on_dacast=" . $publish_on_dacast, NULL, "POST");


    if ($data->error->message != null) {
        echo "<p>Error : " . $data->error->message . "</p>";
    } else {
        echo
         '<p>live  created !<p>'
        . '<lu> '
        . '<li> id : ' . $data->live->id . ' </li>'
        . '<li> title : ' . $data->live->title . ' </li>'
        . '<li> description : ' . $data->live->description . '</li>'
        . '<li> online : ' . $data->live->online . '</li>'
        . '<li> stream_type : ' . $data->live->stream_type . '</li>'
        . '<li> stream_category : ' . $data->live->stream_category . ' </li>'
        . '<li> publish_on_dacast : ' . $data->live->publish_on_dacast . ' </li>'
                . '</lu>';
    }
}

function curlWrap($url, $json, $action) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
    curl_setopt($ch, CURLOPT_URL, URL . $url);
    curl_setopt($ch, CURLOPT_CAINFO, "cacert.pem");
    curl_setopt($ch, CURLOPT_VERBOSE, 1);
    switch ($action) {
        case "POST":
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
            curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
            break;
        case "GET":
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
            break;
        case "PUT":
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
            curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
            break;
        case "DELETE":
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
            break;
        default:
            break;
    }

    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json'));
    curl_setopt($ch, CURLOPT_USERAGENT, "MozillaXYZ/1.0");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);

    $output = curl_exec($ch);

    curl_close($ch);

    $decoded = json_decode($output);
    return $decoded;
}
?>

Modifié par 6l20 (31 Dec 2013 - 12:32)