2017-12-15 7 views
0

Zend2로 엔드 포인트에 POST 요청을하려고합니다.Zend2 Post Request

Curl을 사용하여 PHP에서 게시물을 작성할 수는 있지만 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는 어떤 피드백도 제공하지 않아 도움이되지 않지만 0은 유효성 검사가 실패했음을 나타냅니다. 이는 정확하지 않으며 일반 오래된 Curl은 유효성을 검증합니다. –