2016-06-03 8 views
0

Ich habe Probleme eine Antwort von einer API bekommt ein http Client Cake PHP 3.Erstellen einen HTTP-Client in Kuchen 3

Ich mag folgende GET Anfrage senden, aber ich kann kein Ergebnis zurückkehren verwalten. Wenn ich diese URL mit einem Browser besuche bekomme ich eine Antwort.

http://XX.XX.XX.XX:8020/mvapireq/?apientry=newuseru&authkey=XXXXXXXXXX&u_username=NEWUSERNAME&u_password=PASSWORD&u_name=NAME&u_email=EMAIL&u_phone=PHONE&u_currency=USD&u_country=USA&u_address=x&deviceid=DEVICEID&now=555

Wenn ich versuche, ist die gleiche Anfrage mit http Client mein reponse Objekt senden immer null

use Cake\Network\Http\Client; 
use Cake\Network\Http\Response; 

public function foo(){  
    $http = new Client(); 
    $data = [ 
     'apientry' => 'newuseru', 
     'authkey' => 'XXXXXXXX', 
     'u_username' => 'NEWUSERNAME', 
     'u_password' => 'PASSWORD', 
     'u_name' => 'NAME', 
     'u_email' => 'EMAIL', 
     'u_phone' => 'PHONE', 
     'u_currency' => 'USD', 
     'u_country' => 'USA', 
     'u_address' => 'x', 
     'deviceid' => 'DEVICEID', 
     'now' => '555' 
    ]; 

    $response = $http->get('http://XX.XX.XX.XX:8020/mvapireq', $data); 

    debug($response->body); 
    debug($response->code); 
    debug($response->headers); 
} 

Das sind die Ergebnisse der debug() ist es mir scheint, als ob die Anforderung nicht gesendet wird .

Notice (8): Trying to get property of non-object [APP/Controller/UsersController.php, line 1159] 

/src/Controller/UsersController.php (line 1159) 

null 

Notice (8): Trying to get property of non-object [APP/Controller/UsersController.php, line 1160] 

/src/Controller/UsersController.php (line 1160) 

null 

Notice (8): Trying to get property of non-object [APP/Controller/UsersController.php, line 1161] 

/src/Controller/UsersController.php (line 1161) 

null 

/src/Controller/UsersController.php (line 1163) 

null 

Ich habe viele verschiedene Möglichkeiten versucht $http strukturieren und alle haben das gleiche Ergebnis zurück. Ich kann wirklich nicht herausfinden, was falsch läuft. Jede Hilfe wäre großartig.

+0

Laden Sie http-Client Verwenden Sie '' '' Cake \ Network \ Http \ Client; '' '? – Salines

+0

Ja, ich habe auch '' Cake \ Network \ Http \ Response; 'nur um sicher zu sein. Ich habe meinen Beitrag bearbeitet –

+0

Was ist das Debug-Ergebnis für '$ Antwort? Bist du sicher, dass es eine "GET" Anfrage hier ist? Ich würde eine 'POST' Anfrage dafür erwarten. –

Antwort

0

Sie können hostname und port im Konstruktor der Client angeben:

<?php 
use Cake\Network\Http\Client; 
// .... 
public function foo(){  

    $http = new Client([ 
     'hostname' => 'XX.XX.XX.XX', 
     'port' => '8020' 
    ]); 

$data = [ 
    'apientry' => 'newuseru', 
    //.... 
    'now' => '555' 
]; 

$response = $http->get('/mvapireq', $data); 
// ... 
} 

Und überprüfen Sie Ihr System:

  • Firewall (o)
  • allow_url_fopen (in Ihrer PHP-Laufzeitkonfiguration)
+0

Danke, ich habe das versucht, aber immer noch die gleichen 'null' Ergebnisse. Auch alle Werte im Konstruktor festgelegt sind überschrieben mit Werten in der "Get" -Funktion. Nach den Cake-Dokumente, jedenfalls. –

+0

Aber versuchen Sie '/ mvapireq' oder '/ mvapireq /' (ohne und mit "/" am Ende?) $ Antwort = $ http-> get ('/ mvapireq', $ data); oder $ antwort = $ http-> get ('/ mvapireq /', $ data); – fiblan

+0

Ja, ich habe jede Kombination ausprobiert Sachen in der "Konstruktor"/"Get" Methode, die ich mir vorstellen konnte. Ich bin zu dem Schluss gekommen, dass Cake den Port nicht mochte. Ich habe den 'http Client' verschrottet und stattdessen cURL benutzt. –