我有这个文件在某个地方发出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 ...)
感谢您的帮助! :)
答案 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;
感谢您的帮助。