2017-12-15 16 views
0

Ich versuche eine POST-Anfrage an einen Endpunkt mit Zend2 zu machen.Zend2 Post Request

Ich kann den Beitrag in PHP tun Locken mit, kann aber nicht, dass die Curl-Anfrage mit Zend2-Client und Antrag reproduzieren.

Zum Beispiel funktioniert das Folgende gut.

$ch = curl_init(); 

curl_setopt($ch, CURLOPT_URL,$url); 
curl_setopt($ch, CURLOPT_POST, 1); 

$postfields = array(); 
$postfields['CostCode'] = '999999801'; 

curl_setopt($ch, CURLOPT_POSTFIELDS, 
      $postfields); 

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
             'Content-Type: multipart/form-data; 
charset=UTF-8', 
             'Connection: Keep-Alive' 
             )); 

// receive server response ... 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

$server_output = curl_exec ($ch); 

curl_close ($ch); 

Ergebnis zurückgegeben: -

<ValidateCCResult xmlns="http://ws.apache.org/ns/synapse"> 
<Result>1</Result></ValidateCCResult> 

anzeigt, dass die costcode gültig ist.

Aber, wenn ich versuche, und reproduzieren diese in Zend, ich habe nicht die Antwort, die ich erwarte.

$postfields = array(); 
    $postfields['CostCode'] = '999999801'; 

    $client = new \Zend\Http\Client(); 

    $client->setAdapter(new \Zend\Http\Client\Adapter\Curl()); 

    $request = new \Zend\Http\Request(); 

    $request->setUri($url); 
    $request->setMethod(\Zend\Http\Request::METHOD_POST); 
    $request->getHeaders()->addHeaders([ 
     'Content-Type' => 'multipart/form-data; charset=UTF-8' 
    ]); 

    $request->setContent($postfields); 

    $response = $client->dispatch($request); 

<ValidateCCResult xmlns="http://ws.apache.org/ns/synapse"><Result>0</Result> 
<Message/></ValidateCCResult> 

Ich habe verschiedenen Content-Typen versucht, aber habe das Gefühl, es ist etwas zu tun mit setContent das Array von $ postfields ändern.

Antwort

0

Versuchen

$postfields['CostCode'] = '999999801'; 
$uri     = 'http://localhost'; 

$client = new \Zend\Http\Client(); 
$client->setUri($uri); 
$client->setMethod('POST'); 
$client->setOptions(array(
    'keepalive' => true, 
)); 
$client->setEncType(\Zend\Http\Client::ENC_FORMDATA); 

$client->setParameterPost($postfields); 
$response = $client->send(); 

echo $response->getBody(); 
+0

Angst nicht zu verwenden. Ich habe es auch versucht, aber kein Glück. $ client-> setOptions (array ( 'charset' => 'UTF-8', 'Inhaltstyp' => 'multipart/form-data; charset = UTF-8' )); –

+0

Fügen Sie in Frage, welches Ergebnis Sie erhalten und was genau falsch im Ergebnis ist. – zen

+0

Aktualisiert. Die API hilft nicht, indem sie keine Rückmeldung gibt, aber eine Null zeigt an, dass die Validierung fehlgeschlagen ist, was, wie ich weiß, nicht korrekt ist und die einfache alte Curl gut ausfällt. –