今天项目遇到一个小问题,做了个小功能,向服务端发送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通讯的更多相关文章

  1. nodejs+expressjs+ws实现了websocket即时通讯,服务器和客户端互相通信

    nodejs代码 // 导入WebSocket模块: const WebSocket = require('ws'); // 引用Server类: const WebSocketServer = We ...

  2. 深入浅出ghostbuster剖析NodeJS与PhantomJS的通讯机制

    深入浅出ghostbuster剖析NodeJS与PhantomJS的通讯机制 蔡建良 2013-11-14 一. 让我们开始吧 通过命令行来执行 1) 进行命令窗口: cmd 2) 进入resourc ...

  3. NodeJs 入门到放弃 — 网络服务器(三)

    码文不易啊,转载请带上本文链接呀,感谢感谢 https://www.cnblogs.com/echoyya/p/14484454.html 目录 码文不易啊,转载请带上本文链接呀,感谢感谢 https ...

  4. HTML5+NodeJs实现WebSocket即时通讯

    声明:本文为原创文章,如需转载,请注明来源WAxes,谢谢! 最近都在学习HTML5,做canvas游戏之类的,发现HTML5中除了canvas这个强大的工具外,还有WebSocket也很值得注意.可 ...

  5. 【nodejs原理&源码赏析(5)】net模块与通讯的实现

    [摘要] Node.js net模块的原理及使用 示例代码托管在:http://www.github.com/dashnowords/blogs 一. net模块简介 net模块是nodejs通讯功能 ...

  6. 【nodejs原理&源码赏析(5)】net模块与通讯的实现

    目录 一. net模块简介 二. Client-Server的通讯 2.1 server的建立 2.2 Socket的建立 三. IPC通讯 四. 撸一个简易的cluster通讯模型 示例代码托管在: ...

  7. Socket.io+Nodejs通讯实例

    具体源码:Socket 目录结构 D:. │ package.json │ server.js │ └─public index.html socket.io.js 需要的条件 socket.io.j ...

  8. NodeJs 实现简单WebSocket 即时通讯

    至于服务器语言选择nodeJs,一是因为自己是做前端的,对javascript比较熟悉,相比于其他后台语言,自然会更喜欢nodeJs了, 二是NodeJs本身事件驱动的方式很擅长与大量客户端保持高并发 ...

  9. NodeJs多进程和socket.io通讯-DEMO

    一.开启多进程 const os = require('os'); const cp = require('child_process'); const forkList = {}; const fo ...

随机推荐

  1. 移植WL18XX到高通的时候,会出现几个.KO文件没有编译出来的情况

    1.检查kernel的.config文件,看是否有CONFIG又恢复了.这个时候就要需找依赖.把依赖使能 2.然后再去驱动源码检查 KCONFIG 的依赖,使能改使能的配置就可以了.

  2. 转 : net use的使用

    老是忘了 net use 怎么样,今天在网上找一篇,贴在这,感谢原作者分享.     1 查看远程主机的共享资源(但看不到默认共享) net view \\IP 2向远程主机复制文件 copy \路径 ...

  3. WPF Template模版之DataTemplate与ControlTemplate的关系和应用【二】

    1. DataTemplate和ControlTemplate的关系 学习过DataTemplate和ControlTemplate,你应该已经体会到,控件只是数据的行为和载体,是个抽象的概念,至于它 ...

  4. cddiv/数组维护

    题目连接 看代码: #include <set> #include <map> #include <cmath> #include <queue> #i ...

  5. [转]Linux挂载点介绍及桌面服务器分区方案

    原链接:http://www.metsky.com/archives/255.html 本文介绍Linux常用分区挂载点常识以及桌面.服务器分区挂载点的推荐配置,当然这个配置是天缘自己写的,分区大小这 ...

  6. java 文件字节输入流

    Example10_4.java import java.io.*; public class Example10_4 { public static void main(String args[]) ...

  7. CDN(转载)

    CDN是什么? 谈到CDN的作用,可以用8年买火车票的经历来形象比喻: 8年前,还没有火车票代售点一说,12306.cn更是无从说起.那时候火车票还只能在火车站的售票大厅购买,而我所住的小县城并不通火 ...

  8. 转:Selenium借助AutoIt识别上传(下载)详解

    AutoIt目前最新是v3版本,这是一个使用类似BASIC脚本语言的免费软件,它设计用于Windows GUI(图形用户界面)中进行自动化操作.它利用模拟键盘按键,鼠标移动和窗口/控件的组合来实现自动 ...

  9. android 去掉listview之间的黑线

    方法1:listView.setDividerHeight(0);方法2:this.getListView().setDivider(null);方法3:android:divider="@ ...

  10. maven 教程一 入门

    摘要: (1)maven是项目管理工具,类似makefile.主要的生命阶段有 validate:验证工程是否正确,所有需要的资源是否可用.  compile:编译项目的源代码.    test:使用 ...