2017-12-15 16 views
0

私はZend2でエンドポイントにPOSTリクエストをしようとしています。Zend2 Post Request

私はPHPでCurlを使って投稿を行うことができますが、Zend2 ClientとRequestを使ってそのCurlリクエストを再現することはできません。

たとえば、次のように正しく動作します。

$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); 

結果が返される: -

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

costcodeが有効であることを示します。

しかし、これをZendで試してみると、私は期待した反応が得られません。

$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> 

私はさまざまなコンテンツタイプを試しましたが、$ postfieldsの配列を変更するsetContentとは何かを感じています。

答えて

0

$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

恐れがない使用してみてください。私もこれで試しましたが、運はありません。 $ client-> setOptions(配列( 'charset' => 'UTF-8'、 'Content-Type' => 'multipart/form-data; charset = UTF-8' )); –

+0

質問には、あなたが得ると思われる結果と、正確には結果が間違っているものを追加してください。 – zen

+0

が更新されました。 APIは何のフィードバックも与えないことによって助けにはなりませんが、ゼロは検証が失敗したことを示します。私は正しいとは言えず、普通の古いCurlは妥当性を検証します。 –

関連する問題