• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

关于在yii2框架下接口接收ios端传来数据

php 搞代码 4年前 (2022-01-23) 21次浏览 已收录 0个评论
文章目录[隐藏]

用Yii::$app->request->post();接收ios传来的数据,将接收到的数据打印出来会显示值为null。如果用$_data = empty($_POST) ? json_decode(file_get_contents(‘php://input’), TRUE) : $_POST;接收ios传来的数据是可以获取到值,但是只要没有接收到这个数据,这里就会报错。请大神指导一下,关于数据接收的问题

回复内容:

用Yii::$app->request->post();接收ios传来的数据,将接收到的数据打印出来会显示值为null。如果用$_data = empty($_POST) ? json_decode(file_get_contents(‘php://input’), TRUE) : $_POST;接收ios传来的数据是可以获取到值,但是只要没有接收到本#文来源gaodai$ma#com搞$$代**码网$这个数据,这里就会报错。请大神指导一下,关于数据接收的问题

检查一下 IOS的HTTP请求头 应该是请求头设置的有问题 我司的ios童鞋请求接口未发生这种情况

可能是iOS传上来的时候没有指定为json格式,
你可以打印 $_SERVER[‘CONTENT_TYPE’] 看看是否为 application/json,
如果不是,试试

<code class="php">$_SERVER['CONTENT_TYPE'] = 'application/json';Yii::$app->request->post();</code>

这个应该是ios发的请求包将消息体直接打包成json格式的消息了。
所以php端需要用file_get_contents(‘php://input’)去获取消息体。

鄙人之前是做iOS的 请求头问他请求头是否设置好
再说正规的取出json数据的方法应该是这样的
$body = Yii::$app->request->getRawBody();
json_decode($body,true);

如果你的API是基于Yii2框架来开发的,你完全可以通过如下的方式进行数据接收:

get请求方式:

<code>$value = Yii::$app->request->get("参数名");</code>

post请求方式:

<code>$value = Yii::$app->request->post("参数名");</code>

如果客户端传递数据时的Content-Type是application/json,那么你需要在config.php文件的request部分中配置如下:

<code>'request' => [    'cookieValidationKey' => '5opbkVM6PYmVxcyNvHG1wK06fkIh0vYG',    'parsers' => [        'application/json' => 'yii\web\JsonParser'    ],],</code>

这样,你能成功拿到以json的形式传递的值。
如果客户端是将对象序列化为json后传递的,你可以这样接收这个对象并保存到数据库:

<code>$article = new Article();$article->load(Yii::$app->getRequest()->getBodyParams(), '');if (!$model->save()) {    throw new ServerErrorHttpException('文章保存失败');}</code>

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:关于在yii2框架下接口接收ios端传来数据

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址