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 ...
随机推荐
- listener、context、filter、servlet及其加载顺序
首先说加载顺序:context-param—>listener —> filter —> servlet 这四类加载顺序与配置顺序无关,对于每一类内部的加载顺序,与配置顺序有关: l ...
- Java学习笔记之多态
1.父类型的引用可以指向子类型的对象: Parent p = new Child(); 2.当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误:如果有,再去调用子类的该同名方法 ...
- git 使用系列(二)---- 分支和合并
Branching and Merging The Git feature that really makes it stand apart from nearly every other SCM o ...
- CDialog上使用CToolBar+CReBar
最经在做一些用户界面的东西,对话框上有很多按钮和组合框,全部加起来差不多有20多个吧,界面非常凌乱,最后决定用CToolBar + CReBar来重新设计界面,为什么选用这个呢?一是因为看到IE用的也 ...
- CI 框架 hooks 的调用方法
流程:在hooks中写一个类 , 在system/core/CodeIgniter.php 判断什么时候执行 hooks中的类 涉及到了php反射获取类 方法 方法中的注释 ...
- android 在代码中使用 #ffffff 模式 设置背景色
differentsum.setBackgroundColor(Color.parseColor("#F3733F"));
- PAT (Advanced Level) 1104. Sum of Number Segments (20)
简单题. #include<cstdio> #include<cstring> #include<cmath> #include<vector> #in ...
- Zencart批量删除无图片产品
Zencart批量删除无图片产品 2012-04-23 07:26:18| 分类: 默认分类 |字号 订阅 转自 http://zhongjia33.blog.163.com/blog/#m=0 ...
- 一个好用简单的布局空间EasyUI
之前项目中都是前端来新写的页面,对于很多后台管理系统来说,新写页面其实比较麻烦. 最近看到一款还是不错的开源页面框架EasyUi http://www.jeasyui.com/index.php 这是 ...
- 转:Eclipse Debug 界面应用详解——Eclipse Debug不为人知的秘密
今天浏览csdn,发现一文详细的描述了Eclipse Debug中的各个知识点,非常详尽!特此记录. Eclipse Debug不为人知的秘密 http://blog.csdn.net/mgoann/ ...