0

Hilfe bei PHP oder C# API code

Hallo zusammen,

ich nutze für die Termingestaltung die online Version von MultiRoute. Dazu habe ich eine Exceltabelle die die Daten einer bestimmten Tabelle von Ninox aus abruft.

Nun würde ich das gerne im Ninox integrieren Dazu hat mir die Fa. MultiRoute einen 2 wöchigen Testzugang freigeschaltet um das ganze mal umzusetzen.

auf deren Homepage findet man hierzu 2 Beispiele einmal in C# und eines in PHP

https://api.multiroute.de/handbuch/code_php/

Mir sind das zu viele 

""  {}  // => ' '

und ich weiß nicht wie ich das auflösen muss um es in Ninox darzustellen 😟

#!/usr/bin/php
<?php
$credentials = "beispiel@beispiel.de:password";

// The data to send to the API
/*$data = array(
    'kind' => 'blogger#post',
    'waypoints' => array(id' => $blogID),
    'title' => 'A new post',
    'content' => 'With <b>exciting</b> content...'
);

$postData = json_encode($data)
*/

$postData = '
{
  "tour": {
    "roundtrip": true,
    "tollfree": false,
    "optimize": "time",
    "avoid_highway": false,
    "start": true
  },
  "waypoints": [
     {
    "address": {"locality": "München", "postcode": "80803", "street": "Pündterplatz 8"}
     },
     {
    "address": {"locality": "Nürnberg", "postcode": "90403", "street": "Weintraubengasse 1"}
     },
     {
    "address": {"locality": "Oberschleißheim", "postcode": "", "street": ""}
     },
     {
    "address": {"locality": "Moosburg", "postcode": "85368", "street": "Orionstraße 2"},
    "time": {"duration_of_stay" : 60, "arrival": "2013-02-19T15:22:46+01:00", "departure": "2013-02-19T16:32:46+01:00"}
     },
     {
    "address": {"locality": "Gammelsdorf", "postcode": "", "street": ""}
     },
     {
    "address": {"locality": "Landshut", "postcode": "", "street": ""},
     "time": {"duration_of_stay": 60, "arrival": "2013-02-19T18:06:08+01:00", "departure": "2013-02-19T18:56:08+01:00"}
    }
  ]
}';


// Setup cURL
$ch = curl_init('http://localhost:3000/startjob');
curl_setopt_array($ch, array(
    CURLOPT_POST => TRUE,
    CURLOPT_RETURNTRANSFER => TRUE,
    CURLOPT_HTTPHEADER => array(
    "Authorization: Basic " . base64_encode($credentials),
    "Content-Type: application/json"
    ),
    CURLOPT_POSTFIELDS => $postData
));

// Send the request
$response = curl_exec($ch);


/*
// Create the context for the request
$context = stream_context_create(array(
    'http' => array(
    'method' => 'POST',
    'header' => "Content-Type: application/json\r\n" .
    "Authorization: Basic " . base64_encode($credentials) ."\r\n",
    'content' => $postData
    )
));

// Send the request
$response = file_get_contents('http://localhost:3000/startjob', FALSE, $context);
*/

// Check for errors
if($response === FALSE){
    die('Error');
}

// Decode the response
$responseData = json_decode($response, TRUE);

// Print the date from the response
echo $response;


// ?>

Gruß

Andreas

4 Antworten

null
    • + Maßanzug statt Massenware +
    • RonaldP
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Moin Andreas Kappes ,

    auf die Schnelle:
    für den Ninox-API Aufbau hat diese Seite zwar kein fertigen Code aber die Infos und Schnipsel des "Webservice-Request" sind mehr in dem Format:
    https://api.multiroute.de/handbuch/routen/#authentifizierung

    VG Ronald

    • Andreas_Kappes
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Roland

    bzw. im Fomat C#

    https://api.multiroute.de/handbuch/code_csharp/

    aber es scheitert leider am grundsätzlichen Verständnis des ganzen API Themas . Kommt das in ein Funktionsfeld oder als klickevent in einen Button wie setzt sich der Aufruf im Zusammenhang mit dem Beispiel zusammen wohin kommt die Rückantwort usw. wenn ich eine einfache Adresstabelle habe mit Strasse / Hausnummer / PLZ / Ort

    Gruß Andreas

      • + Maßanzug statt Massenware +
      • RonaldP
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Moin Andreas Kappes ,

      Das Thema API ist auch je nach APi-Schnittstelle der anderen Seite komplex bis mühsam.
      Es hängt stark von der Qualität der Dokumentation ab.
      Ninox Code ist weder C# noch PHP, sondern Javascript angelehnt, daher sind die Beispiel Scripte auf der Webseite so leider nicht zu verwenden.

      Zum Testen machst du dir am Besten eine Kopie deiner DB!

      Generell definierst du im API-Code das Tabellentextfeld in dem Ninox die Antwort (Response) reinschreibt. Das ist für das Testen sehr hilfreich.
      Z.B. in der Tabelle mit den Adressdaten ein Textfeld "Antwort".
      Der API-Code kommt in einen Button. Und der ist hier der Knackpunkt.

      In der API-Doku von Multiroute sehe ich diese Beispiel-Antwort auf die Authorisierung
      (http://username:password@domain/):

       {
          "return_code": 0,
          "error_description": "",
          "tid": "bGVJKz6wFb-xi1zKmWKpKw",
          "credit_expiration_date": "2014-02-26T14:00:02+01:00"
        }
      

      Mein erster Test wäre (http://username:password@domain/) mit deinen Daten im Browser zu testen und hoffen, dass etwas in obigem Format zurückkommt.

      VG Ronald
       

    • Andreas_Kappes
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Für Javascript hat mir die Fa. MultiRoute heute folgendes Code Beispiel zugesendet

    $.ajax({
            url: "https://webservice.tourenplaner.biz/startjob",
            data: tour_object,
            contentType: "application/json",
           datatype: "json",
            type: 'POST',
            beforeSend: function(xhr){
                xhr.setRequestHeader("Authorization",
                    "Basic " + btoa("user:password"));
            },
            success: function (data) {
                alert("Function Success!");
                console.debug(data);
            },
            error: function (errMsg) {
                alert("Error");
                console.debug(errMsg);
            }
        });