Zend 2 REST Client Post方法也发送头参数

时间:2014-08-25 10:51:58

标签: php web-services rest zend-framework2 client

在Zend Framework 2中,使用POST方法使用REST Client,帖子URL具有查询字符串,

当邮件请求发布时,邮递员正常,我已设置的帖子内容 {"authToken":"11111111111111"}并发布,状态成功。

当我使用GET方法获得此值时,我得到了响应{"authToken":"11111111111111"}

这是正确的。

当我通过以下方法执行此操作时,php zend 2,

protected function genericSendRequest($url, $rawJsonData = NULL, $param = array()){
    $response = '';
    if(!empty($param)) {
      $url .= '?' . http_build_query($param);
    }
    $client = $this->getHttpClient();
    $client->setUri($url);
    $client->setMethod('POST');
    if($rawJsonData != null) {
      $client->setRawBody(json_encode($rawJsonData));
    }

    $response = $client->send();
    if ($response->isSuccess()) {
        return $response->getContent();
    }
    return NULL; 
}

请求输入,

$rawJsonData = array("authToken"=>"11111111111111"); $param = array("id"=>"9e770c9f71b4ef1b4ae85c58b0be4280253f9a2e");

我得到了回应,

id=9e770c9f71b4ef1b4ae85c58b0be4280253f9a2e&%7B%22authToken%22%3A%2211111111111111%22%7D=

这看起来像是一个URL查询字符串,

我需要回复{"authToken":"11111111111111"}

即。我需要得到我发布的内容,但我得到帖子+查询字符串,

查询字符串另外发布到请求,因此它在响应中,

应该如何避免发布此查询字符串。

我的代码需要进行哪些更改。

任何帮助都非常感激。

提前致谢。

1 个答案:

答案 0 :(得分:1)

你的问题不是很清楚,但假设你想要发布JSON数据而不是形成编码数据,你想要:

if ($rawJsonData != null) {
    $client->setRawBody(json_encode($rawJsonData));
}

此外,您可以将函数的查询字符串部分重写为:

if (!empty($param)) {
    $uri .= '?' . http_build_query($param);
}