PHP CURL POST JSON NODE.JS
发布于 9 年前 作者 zenHeart 7099 次浏览 最后一次编辑是 8 年前 来自 问答

使用 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”} 错误在哪里?

7 回复

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";

这样就可以了。

回到顶部