2016-07-06 12 views
0

Ich habe Probleme, meine Syntax zu korrigieren, und ich würde jede Unterstützung schätzen; Ich versuche, meine Client-Setup eine Basis-URL enthalten, und einige notwendigen Header-Informationen (einschließlich einer benutzerdefinierten Sicherheitstoken)Guzzle; Einrichten eines Clients mit Basis-URL, Kopfzeilen und dann POST

Der nächste Schritt ist, um den Webservice POST,:

$baseServiceURL = ['base_uri' => 'http://127.0.0.1:8080/service/v1/ws//something/update']; 
$theHeaders = ['Content-Type' => 'application/json', 'Accept' => 'application/json', 'token' => 'test-token']; 

$updateRequestClient = new Client($baseServiceURL, array(
    "request.options" => array(
     "headers" => $theHeaders 
    ) 
)); 

//var 1 coming from elsewhere 
$varNum2 = $q; 
$varNum3 = $w; 
$varNum4 = $e; 
$varNum5 = $r; 
$varNum6 = $t; 
$varNum7 = 'me'; 

// json name/value pairs 
$updateBody['name1'] = $varNum1; 
$updateBody['name2'] = $varNum2; 
$updateBody['name3'] = $varNum3; 
$updateBody['name4'] = $varNum4; 
$updateBody['name5'] = $varNum5; 
$updateBody['name6'] = $varNum6; 
$updateBody['name7'] = $varNum7; 

//send 
$updateRequestResponse = $updateRequestClient->post([ 'body' => json_encode($updateBody) ]); 

//response 200?? 
$responseCode = $updateRequestResponse->getStatusCode(); 

if ($responseCode == "200") {             

echo ("SUCCESS"); 

} 

Ich bin mit dem folgenden Fehler auf meiner HTML-Seite dargestellt:

Warning: parse_url() expects parameter 1 to be string, array given in C:\xampp\vendor\guzzlehttp\psr7\src\Uri.php on line 51

Catchable fatal error: Argument 1 passed to GuzzleHttp\Psr7\Uri::applyParts() must be of the type array, null given, called in C:\xampp\vendor\guzzlehttp\psr7\src\Uri.php on line 55 and defined in C:\xampp\vendor\guzzlehttp\psr7\src\Uri.php on line 410

Wenn ich meine URL zu bespannen $baseServiceURL = (string)('http://127.0.0.1:8080/service/v1/ws//something/update'); ändern erhalte ich:

Catchable fatal error: Argument 1 passed to GuzzleHttp\Client::__construct() must be of the type array, string given, called in C:\xampp\htdocs\SSQueryTool\updateDoctor.php on line 79 and defined in C:\xampp\vendor\guzzlehttp\guzzle\src\Client.php on line 62

Antwort

0

Nach dem Einschalten das den ganzen Tag arbeiten ich habe es endlich funktioniert, bitte meine Details unten finden:

//PREP PAYLOAD (varNum1 coming from elsewhere) 
$varNum2 = $q; 
$varNum3 = $w; 
$varNum4 = $e; 
$varNum5 = $r; 
$varNum6 = $t; 
$varNum7 = 'me'; 

//THE WEBSERVICE UPDATE BASE URL 
$baseServiceURL = (string)('http://127.0.0.1:8080/service/v1/ws//something/update'); 

$updateRequestClient = new Client(['timeout' => 10000.0,]); 

//ASSIGN json name/value pairs to body 
$updateBody['name1'] = $varNum1; 
$updateBody['name2'] = $varNum2; 
$updateBody['name3'] = $varNum3; 
$updateBody['name4'] = $varNum4; 
$updateBody['name5'] = $varNum5; 
$updateBody['name6'] = $varNum6; 
$updateBody['name7'] = $varNum7; 

//SEND AND SAVE RESULT TO updateRequestResponse //TAKE NOTE OF: JSON_FORCE_OBJECT // 
$updateRequestResponse = $updateRequestClient->post($baseServiceURL, ['headers' => ['Content-Type' => 'application/json', 'Accept' => 'application/json', 'token' => 'test-token'], 'body' => json_encode($updateBody, JSON_FORCE_OBJECT) ]); 

$requestResponseCode = $updateRequestResponse->getStatusCode(); // 200?? 

if ($requestResponseCode == "200") {             

echo ("SUCCESS"); 

} 
2
$baseServiceURL = 'http://127.0.0.1:8080/service/v1/ws//something/update'; 
$theHeaders = ['Content-Type' => 'application/json', 'Accept' => 'application/json', 'token' => 'test-token']; 

$updateRequestClient = new Client(array(
    'base_uri' => $baseServiceURL, 
    'headers' => $theHeaders 
)); 

Kunde akzeptiert nur 1 Parameter im Konstruktor https://github.com/guzzle/guzzle/blob/master/src/Client.php#L62

+0

Vielen Dank für Ihre Antwort, Du hast Recht. Ich habe einige Änderungen an meinem ursprünglichen Beispiel vorgenommen, um es zum Laufen zu bringen. Ich werde es unten als Antwort posten. – BernardV