使用 PHP 利用 curl 的 方式向 node.js 提交 json 的数据包时,json 解析的数据包出错!
新浪云 sae 的代码如下:
<?php
/**功能: 利用 php 的 curl 向 aliyun 的 node.js post 数据并接收返回的 json 数据包**/
$url = "http://120.25.126.64:8888/send/"; // 阿里云的 ip 地址
$data = array("username" => "locke", "key" => "12345");
$post_data = json_encode($data); //
// post 数据
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
$output = curl_exec($ch);
curl_close($ch);
//打印 node.js 返回的数据包
$json_data = json_decode($output,true);
var_dump($json_data);
?>
阿里云 node.js 代码:
var express = require('express');
var request = require('request');
var app = express();
app.use(require('body-parser').urlencoded({extended: true}));
app.post('/send', function (req, res) {
console.log(req.body);
res.json({'name':'locke','key':'123'});
});
app.listen(8888);
console.log('Listening on port 8888');
在新浪服务器端 可以正确解析返回的响应为: array(2) { [“name”]=> string(5) “locke” [“key”]=> string(3) “123” } 但是在阿里云控制台上显示结果为: { ‘{“username”:“locke”,“key”:“12345”}’: ‘’ } 理想情况下结果应该为: {“username”:“locke”,“key”:“12345”} 错误在哪里?
PHP 那边的问题吧,把数据放到key里了。
什么意思?
我发送和解析的内容并不相同!目的是实现 php 和 node.js 之间 以 json 的方式进行数据的交互!
@zenHeart 但是在阿里云控制台上显示结果为: { '{“username”:“locke”,“key”:“12345”}’: ‘’ }
你的JSON数据不是在 key 里面嚒。
{"username":"locke","key":"12345"}
PHP 不熟,不好揣测。
不对!你可以用 php echo $post_data 这个数据看一下格式!就知道我说的意思了!
php 端的代码应该不会有问题!粘贴出来是方便理解代码!问题是在 node.js 解析它的时候出错了!但是不知道我写的问题在哪里?
PHP 里面要手动拼接字符串:
$data = "username="."locke"."&key="."12345";
这样就可以了。