解析PUT请求的参数时出错

佩德罗卡尔加罗

尝试从Yii上的PUT请求获取参数时遇到问题。

方法getPut()调用方法getRestParams(),该方法尝试解析rawBody。方法getRawBody()返回file_get_contents('php:// input')的值

函数file_get_contents('php:// input')返回值:

{"foo": "foo content", "bar": "bar content"}

函数getRestParams()尝试解析此内容,调用函数mb_parse_str(https://github.com/yiisoft/yii/blob/master/framework/web/CHttpRequest.php#L290

mb_parse_str($this->getRawBody(), $result);

但这返回:

Array
(
    [{"foo": "foo content", "bar": "bar content"}] => 
)

我对PHP没有太多的经验,而对Yii框架的了解则更少。

对我来说,这似乎是框架中的错误,但我可能错了。

有人可以帮我吗?

奥利姆·赛义多夫(Olim Saidov)

如果您希望所有请求都具有JSON数据,请使用以下简单解决方案:

扩展基本请求组件:

class HttpJsonRequest extends CHttpRequest
{

    protected $_restParams;

    public function getRestParams()
    {
        if ($this->_restParams === null) {
            $this->_restParams = CJSON::decode($this->getRawBody());
        }

        return $this->_restParams;
    }

}

并在config main中包含此类:

'components' => array(
    ...
    'request' => array('class' => 'HttpJsonRequest'),
    ...
)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从 alomofire 发布请求解析时出错

从tomcat中的put请求手动解析参数

在 Dart 中解析来自 http GET 请求的数据时出错

Tomcat 7.0.43“ INFO:解析HTTP请求标头时出错”

在Spring Boot中解析HTTP请求标头时出错

在Alamofire中将参数添加到请求时出错

在请求库中传递curl -d参数时出错

向HTTP请求添加查询参数时出错

当任何请求参数丢失/无效时抛出错误

解析参数'--targets'时出错:预期:'=',收到:'''输入:'[Key:InstanceIds]'

解析参数'--parameters'时出错:预期:'=',收到:'P'

AWS CLI:解析参数'--item'时出错:无效的JSON:

nodejs PUT 请求出错

运行*请求*时出错

Flask在解析GET请求时仅返回单个参数

解析请求参数JSON :: ParserError-795时发生错误:

解析HTTP请求参数

解析“ Gemfile”时出错

解析JSON时出错

“解析查询时出错。”

解析PFLoginViewController时出错

传递参数时出错

请求参数和PUT方法

Bluemix上的业务规则服务的“从请求中提取请求时的规则集参数值时出错。在SignatureXMLBinding.deserialize上”

使用gitlab CI通过CLI创建lambda函数时出错(解析参数'--zip-file'时出错:无法加载paramfile)

SpringBoot-解析HTTP请求标头时出错(Oauth2 https端点)

AWS API Gateway-调用API方法时出错-'无法将请求正文解析为json'

无法解析请求 - MissingJsonReferenceId:使用 PowerShell Az 命令创建 NIC 时出错

在我的Web API端点中解析HTTP POST请求正文时出错