Flash as3 - 带有自定义标头的API请求:POST但显示为GET(IOError#2032)

时间:2015-10-07 18:35:38

标签: json actionscript-3 error-handling

我有这个文件在某个地方发出API请求来检索JSON数据。 该请求需要有2个自定义标头。我已经读过自定义标头要求请求为POST。

我已经在这里和其他网站上阅读了所有以前的问题,我认为代码显示得很好......“有趣”部分是在某些时候我创建了一个记录器(环境:Tomcat)来查看为什么它没有加载,显然我发送的请求是一个GET即使我已经指定它是一个POST ...

代码

var url:String = "your_url_here";

var headers:Array = [
    new URLRequestHeader("user-id","your_user-id"),
    new URLRequestHeader("custom-auth","your_custom_auth_code"),
    new URLRequestHeader("Accept","application/json")
    ];

var request:URLRequest = new URLRequest();
request.requestHeaders = headers;
request.method = URLRequestMethod.POST;
request.contentType = "application/json";
request.url = url;

var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.TEXT; 
loader.addEventListener(Event.COMPLETE, decodeJSON);
loader.addEventListener(IOErrorEvent.IO_ERROR, handleError);

loader.load(request);

private function handleError(e:IOErrorEvent):void{
        sometextcontainer.txt01.text = e.toString();
        }

private function decodeJSON(e:Event) {
        var Info:Object = JSON.parse(e.target.data);
        // text fillers
}

错误:#2032 STREAM ERROR ,但我100%确定网址是否正确,所以我做了一个记录器来实际看到另一边发生的事情并惊喜...该请求似乎是一个GET!

我做错了什么?想法?

注1:我没有沙盒安全问题,因为我已经放置了全局异常;

注意2:我在REST中尝试使用自定义标头(作为POST)并且它可以工作(并且记录器说我实际上发了一个POST ...)

感谢您的帮助! :)

1 个答案:

答案 0 :(得分:1)

这就成了伎俩。

我添加代码是为了让每个人都能更好,更快地理解它。基本上,我添加了以下内容:

var datareq:URLVariables = new URLVariables();
datareq.dummyTest = "true";
request.data = datareq;`

所以现在看起来像:

var request:URLRequest = new URLRequest();
var datareq:URLVariables = new URLVariables();
datareq.dummyTest = "true";
request.data = datareq;
request.requestHeaders = headers;
request.method = URLRequestMethod.POST;
request.contentType = "application/json";
request.url = url;

感谢您的帮助。