NodeJs与ActionScript的GET和POST通讯
今天项目遇到一个小问题,做了个小功能,向服务端发送GET请求,但是服务端解析数据是时候报语法错误,如下:
make Request data error:SyntaxError: Error #1132: 无效的 JSON 解析输入。
Error #2044: 未处理的 error:。 text=make Request data error:SyntaxError: Error #1132: 无效的 JSON 解析输入。
很明显,引发报错的原因是服务端把这个数据当作JSON格式去解析了,但是我发送的格式是BINARY,所以导致报错了。
服务端的哥们叫我发了好几遍请求地址给他,发给他的时候他觉得GET请求的参数应该是这样的url?key=value&.....
为了证明给他看,GET请求不一定是这样子的,我自己写了一个NodeJS和ActionScript通讯的小Demo给他看。
NodeJS方代码如下:
var http = require('http');
var fs = require('fs');
var path = require('path');
var mime = require('mime');
var querystring = require('querystring');
var url = require('url')
var cache ={};
var postserver = http.createServer(function(request, response){
request.addListener("data", function(chunk){
console.log('Get data from : '+request.url + " ======= length : " + chunk.length);
console.log('Name From Request : ' + chunk);
});
});
var gettserver = http.createServer(function(request, response){
var params = url.parse(request.url, true);
console.log(params);
response.end();
});
postserver.listen("8889", function(){
console.log("===========Server now listenling:8889====================");
});
gettserver.listen("8887", function(){
console.log("===========Server now listenling:8887====================");
});
客户端ActionScript代码:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" creationComplete="onInit()">
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<fx:Script>
<![CDATA[
private var request:URLRequest;
private var loader:URLLoader;
private var urlData:URLVariables;
private function onPostClicked():void
{
// TODO Auto Generated method stub
request.method = URLRequestMethod.POST;
request.url = "http://localhost:8889";
urlData.name = "POST";
doRequest();
} private function onGetClicked():void
{
// TODO Auto Generated method stub
request.method = URLRequestMethod.GET;
request.url = "http://localhost:8887";
urlData.name = "GET";
doRequest();
} private function doRequest():void
{
loader.load(request);
} private function onInit():void
{
// TODO Auto Generated method stub
request = new URLRequest();
loader = new URLLoader();
urlData = new URLVariables();
request.data = urlData;
loader.dataFormat = URLLoaderDataFormat.BINARY;
loader.addEventListener(Event.COMPLETE, onComplete);
loader.addEventListener(IOErrorEvent.IO_ERROR, onError);
Security.allowDomain("*");
} protected function onComplete(event:Event):void
{
// TODO Auto-generated method stub
trace("Success......");
} protected function onError(event:IOErrorEvent):void
{
// TODO Auto-generated method stub
trace("Fail......");
}
]]>
</fx:Script>
<s:Button label="SEND GET" click="onGetClicked()" width="100" height="30" x="10" y="10"/>
<s:Button label="SEND POST" click="onPostClicked()" width="100" height="30" x="10" y="50"/>
</s:Application>
客户端效果图:

点击SEND GET按钮会向NodeJs服务端以get方式请求,
点击SEND POST按钮则会向NodeJs服务端以post方式发送请求。
服务端结果如下:

这个是收到一次GET请求和一次POST请求的结果。
在最初的时候,我将POST请求的处理和GET请求的处理都写到了同一个处理函数里面去,但是GET请求会成功,console不会打印信息,不知道是啥子原因,于是将GET请求的端口与POST请求的端口分开来,GET端口会打印相关内容了。
暂时不知道是什么原因,后续研究之后会update。
UPDATE:特喵的,发现居然是客户端解析问题,服务端的结果返回没有用JSON格式化。
NodeJs与ActionScript的GET和POST通讯的更多相关文章
- nodejs+expressjs+ws实现了websocket即时通讯,服务器和客户端互相通信
nodejs代码 // 导入WebSocket模块: const WebSocket = require('ws'); // 引用Server类: const WebSocketServer = We ...
- 深入浅出ghostbuster剖析NodeJS与PhantomJS的通讯机制
深入浅出ghostbuster剖析NodeJS与PhantomJS的通讯机制 蔡建良 2013-11-14 一. 让我们开始吧 通过命令行来执行 1) 进行命令窗口: cmd 2) 进入resourc ...
- NodeJs 入门到放弃 — 网络服务器(三)
码文不易啊,转载请带上本文链接呀,感谢感谢 https://www.cnblogs.com/echoyya/p/14484454.html 目录 码文不易啊,转载请带上本文链接呀,感谢感谢 https ...
- HTML5+NodeJs实现WebSocket即时通讯
声明:本文为原创文章,如需转载,请注明来源WAxes,谢谢! 最近都在学习HTML5,做canvas游戏之类的,发现HTML5中除了canvas这个强大的工具外,还有WebSocket也很值得注意.可 ...
- 【nodejs原理&源码赏析(5)】net模块与通讯的实现
[摘要] Node.js net模块的原理及使用 示例代码托管在:http://www.github.com/dashnowords/blogs 一. net模块简介 net模块是nodejs通讯功能 ...
- 【nodejs原理&源码赏析(5)】net模块与通讯的实现
目录 一. net模块简介 二. Client-Server的通讯 2.1 server的建立 2.2 Socket的建立 三. IPC通讯 四. 撸一个简易的cluster通讯模型 示例代码托管在: ...
- Socket.io+Nodejs通讯实例
具体源码:Socket 目录结构 D:. │ package.json │ server.js │ └─public index.html socket.io.js 需要的条件 socket.io.j ...
- NodeJs 实现简单WebSocket 即时通讯
至于服务器语言选择nodeJs,一是因为自己是做前端的,对javascript比较熟悉,相比于其他后台语言,自然会更喜欢nodeJs了, 二是NodeJs本身事件驱动的方式很擅长与大量客户端保持高并发 ...
- NodeJs多进程和socket.io通讯-DEMO
一.开启多进程 const os = require('os'); const cp = require('child_process'); const forkList = {}; const fo ...
随机推荐
- winxp sp2
不支持sha2,所以ssl建立失败, sp3就可以了 http://superuser.com/questions/802693/sha2-support-for-windows-xp-sp2-any ...
- Python 模块功能paramiko SSH 远程执行及远程下载
模块 paramiko paramiko是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件操作,值得一说的是,fabric和ansible内部的远程管理就是使用的paramiko来现 ...
- 1.1 sikuli 安装
JRE7不支持sikuli,必须下载JRE6 更新号必须大于35 sikuli下载: http://www.cr173.com/soft/52775.html 或参照 http://www.cnb ...
- 2.1 sikuli 中编程运行
1.用sikuli编程时,多用wait()语句,因为很多时候没有给它一定的识别时间,就容易出错. 比如下图,保证页面加载时间 1.Sikuli中 ,可以加# 进行注释 但是注释有的时候也会不起作用,比 ...
- Android OpenGL ES(二)OpenGL ES管道(Pipeline) .
大部分图形系统都可以比作工厂中的装配线(Assemble line)或者称为管道(Pipeline).前一道的输出作为下道工序的输入.主CPU发出一个绘图指令,然后可能由硬件部件完成坐标变换,裁剪,添 ...
- 689D Magic Odd Square 奇数幻方
1 奇数阶幻方构造法 (1) 将1放在第一行中间一列; (2) 从2开始直到n×n止各数依次按下列规则存放:按 45°方向行走,向右上,即每一个数存放的行比前一个数的行数减1,列数加1 (3) 如果行 ...
- The Rings Akhaten
在其他的平行宇宙中存在着一个古老的星系--Akhaten,星系中有七个世界,上面生活着Panbabylonian.Lucanian等物种,不过外界也常常把他们统称为Akhet,因为这七个世界环绕着同一 ...
- //获取url中"?"符后的字串
//获取url中"?"符后的字串 function getParamByUrl(url) { var theRequest = new Object(); var in ...
- php 判断是不是https链接
如果当前运行的 PHP 版本等于或高于提供的版本号,该函数返回布尔值 TRUE ,反之则返回 FALSE . function is_https() { if (!empty($_SERVER['HT ...
- ReactiveCocoa / RxSwift 笔记一
原创:转载请注明出处 ReactiveCocoa / RxSwift Native app有很大一部分的时间是在等待事件发生,然后响应事件,比如 1.等待网络请求完成, 2.等待用户的操作, 3.等待 ...