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とは何かを感じています。
恐れがない使用してみてください。私もこれで試しましたが、運はありません。 $ client-> setOptions(配列( 'charset' => 'UTF-8'、 'Content-Type' => 'multipart/form-data; charset = UTF-8' )); –
質問には、あなたが得ると思われる結果と、正確には結果が間違っているものを追加してください。 – zen
が更新されました。 APIは何のフィードバックも与えないことによって助けにはなりませんが、ゼロは検証が失敗したことを示します。私は正しいとは言えず、普通の古いCurlは妥当性を検証します。 –