2016-05-08 3 views
0

Ich versuche, einen API-Aufruf mit diesem Code zu machen:Warum funktioniert nicht Aufruf an https Rest API mit Curl in PHP?

<?php 
    $service_url = 'https://favqs.com/api/qotd.json'; 
    $curl = curl_init($service_url); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($curl, CURLOPT_POST, false); 
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 
    $curl_response = curl_exec($curl); 
    curl_close($curl); 
    $json_objekat = json_decode($curl_response); 
    echo $json_objekat->quote->author.'<br>'; 
    echo $json_objekat->quote->body.'<br>'; 
?> 

Dieser Code als PHP-Datei in www (root) Ordnern auf meinem lokalen Rechner gespeichert wird. Ich benutze einen WAMP-Server.

Wenn ich diese Datei von WAMP öffnen heißt es:

Hinweis:
Der Versuch, Eigentum von Nicht-Objekt in C zu erhalten: \ wamp \ www \ IzdavackaKuca \ javniServis.php on line 10 Der Versuch, um die Eigenschaft des Nicht-Objekts in C: \ wamp \ www \ IzdavackaKuca \ javniServis.php in Zeile 10 zu erhalten Versuch, Eigenschaft von Nicht-Objekt in C: \ wamp \ www \ IzdavackaKuca \ javniServis.php on line 11 Probieren zu bekommen um die Eigenschaft von Nicht-Objekt in C: \ wamp \ www \ IzdavackaKuca \ javniServis.php auf Linie 11

zu erhalten 10

Ich überprüft php Erweiterungen Option php_curl auf WAMP und ich weiß nicht, ob ich einige andere Optionen überprüfen sollte. Ich weiß nicht, ob es ein Problem mit meinem WAMP-Server gibt oder was das Problem ist, weil ich denselben Code an ein paar andere Leute gesendet habe und sie sagen, dass es auf ihrem Computer funktioniert. Ich weiß nicht, wo der Fehler ist, also hoffe ich, dass mir jemand helfen kann.
Danke!

+0

Was ist die Antwort, die Sie erhalten? –

+0

"$ curl_response" ausdrucken, um zu sehen, was es ist, das Problem ist, dass der 'json_decode' fehlschlägt, so dass die letzten zwei Zeilen nicht funktionieren. – Rainner

+0

@u_mulder Wenn ich $ curl_responce benutze, wie Poiz unten schrieb, erhalte ich die Antwortzeichenfolge 'Unbekannter SSL-Protokollfehler in Verbindung mit favqs.com:443' (Länge = 58) und wenn ich meinen Code ändere, wie Minh Thanh schrieb, dann tue ich es nicht Ich werde nicht länger auf Fehler aufmerksam, aber ich sehe nichts, nur einen leeren Bildschirm ... Es funktioniert nicht. Weißt du, warum ist das so? – Svetlana

Antwort

0

Es sei denn, Sie tun es wirklich anders; Ich stelle mir vor, dass Sie möglicherweise kein Problem mit Ihrem WAMP Server haben. Das Problem, das ich fand, ist, dass die URL https://favqs.com/api/qotd.json ein Unbekanntes SSL-Protokoll gemäß der Fehlermeldung hat. Überzeugen Sie sich selbst:

<?php 

    $defaults = array(
     CURLOPT_URL    => 'https://favqs.com/api/qotd.json', 
     CURLOPT_POST   => false, 
     CURLOPT_HEADER   => false, 
     CURLOPT_SSL_VERIFYPEER => false, 
     CURLOPT_RETURNTRANSFER => true, 
     CURLOPT_SSL_VERIFYHOST => false, 
    ); 
    $curl    = curl_init(); 
    curl_setopt_array($curl, $defaults); 
    $curl_response  = curl_exec($curl); 
    $json_objekat  = json_decode($curl_response); 

    // DUMP THE CURL-ERROR INFORMATION: 
    var_dump(curl_error($curl)); 
    curl_close($curl); 

## EDITS ## Je nachdem, was Sie zu tun versuchen; Ich denke, dass Sie einen Zugriffscode benötigen, damit dies richtig funktioniert, und Sie können es hier erhalten: enter image description here

Und wenn Sie das tun; Alles, was Sie tun müssen, ist Ihren Code zu ändern und fügen Sie den Autorisierungscode ...

+0

Ja, ich sehe, mit Ihrem Code, bekomme ich die Antwort-String 'Unbekannte SSL-Protokoll Fehler in Verbindung mit favqs.com:443' (Länge = 58) – Svetlana

+0

Aber was kann ich jetzt tun? Warum auf Computern einiger meiner Freunde funktioniert es? – Svetlana

+0

Sie können über die Ursache dieses Fehlers hier lesen: http://blog.techstacks.com/2010/03/3-common-causes-cures-of-unknown-ssl-protocol-errors-with-curl.html jedoch seit In diesem Fall können Sie einen anderen Ansatz versuchen, der keine Locke erfordert. – Poiz

0

Wenn Sie json_decode verwenden. Es wird Ihre JSON-Zeichenfolge in Array, nicht in Objekt übertragen. Dann, wenn Sie Argumente von dieser Antwort nehmen wollen. Sie sollten wie folgt codieren

echo $json_objekat['quote']['author'].'<br>'; 
echo $json_objekat['quote']['body'].'<br>'; 
+0

Wenn ich so code, passiert nichts, eigentlich gibt es keinen Fehler, aber es funktioniert auch nichts, ich sehe nur leere Seite mit nichts darauf geschrieben. Warum nicht? – Svetlana

+0

Dann sollten Sie 'var_dump ($ json_objekat)' verwenden, um zu sehen, was genau in dieser Antwort –