在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"}
即。我需要得到我发布的内容,但我得到帖子+查询字符串,
查询字符串另外发布到请求,因此它在响应中,
应该如何避免发布此查询字符串。
我的代码需要进行哪些更改。
任何帮助都非常感激。
提前致谢。
答案 0 :(得分:1)
你的问题不是很清楚,但假设你想要发布JSON数据而不是形成编码数据,你想要:
if ($rawJsonData != null) {
$client->setRawBody(json_encode($rawJsonData));
}
此外,您可以将函数的查询字符串部分重写为:
if (!empty($param)) {
$uri .= '?' . http_build_query($param);
}