FlashDevelop 接收 XML,Flash Pro 接收 JSON
Posted
技术标签:
【中文标题】FlashDevelop 接收 XML,Flash Pro 接收 JSON【英文标题】:FlashDevelop receives XML, Flash Pro receives JSON 【发布时间】:2017-01-15 07:07:00 【问题描述】:我从客户的供应商处获得数据馈送。 Documention 说我可以获取 XML 和 JSON 格式的提要,但默认是 XML。要获取 JSON,我必须设置一个标头 Accept:application/json 并删除 Accept:application/xml 标头。 我没有在我的代码中设置或删除任何标题。 我正在使用普通的 URLLoader 来加载提要。
当我在浏览器中导航到提要 URL 时,我得到 XML。 当我在 FlashDevelop 中运行我的代码时,我得到 XML。 当我在 Flash Pro 中运行完全相同的代码时,我得到 JSON。
有谁知道 Flash Pro 中出现这种情况的原因是什么?任何可以更改的隐藏设置? URLRequest.method 没有影响。调试模式与否没有影响。 我被踩了。
---------我试过的代码------------
var header:URLRequestHeader = new URLRequestHeader("Accept", "application/xml");
var headers:Array = [];
headers.push(header);
urlReq.requestHeaders = headers;
urlReq.method = URLRequestMethod.POST;
--------- 满载代码------------
_urlLoader.addEventListener(Event.COMPLETE, validateFeedLoaded);
_urlLoader.addEventListener(IOErrorEvent.IO_ERROR, handleFeedIOerror);
_urlLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, handleFeedSecError);
var urlReq:URLRequest = new URLRequest(_feedUrl);
urlReq.requestHeaders = [new URLRequestHeader("Accept", "application/json")];
_urlLoader.load(urlReq);
【问题讨论】:
是否做过任何基本的调试,比如嗅探您的各种客户端发送的请求的标头? 这个阶段没有客户参与,我还在构建这个数据源。但是,如果我检查代码中的 urlrequest.requestHeaders,我什么也得不到。 他们当然参与了,你在问为什么 3 个不同的客户会收到不同的结果。正如@Marc B 建议的那样,监视 HTTP 通信以查看发出的请求是否不同。 browser = client 1. flashdevel = client 2, flashpro = client 3. 确保您发送的标头没有被覆盖/替换。 Client != company customer x) 好吧,我是第一个承认我远非头部专家的人。我在这方面的知识延伸到检查我的代码中的 urlReg.requestHeaders 并且在跟踪它时我得到一个空值,无论我是在 FD 还是 Flash Pro 中。有什么想法可以让我获得更多信息吗?我无法控制我们加载的网址是“定位”的服务器。 【参考方案1】:不同的客户端/应用程序有不同的默认值。不同版本的 flash/air 运行时可能对接受类型有不同的默认值。
如果你需要一致性,那么你应该在你的请求中明确设置接受类型:
urlrequest.requestHeaders = [new URLRequestHeader("Accept", "application/json")];
这应该确保您在使用的任何版本的运行时中都能在两个 IDE 中恢复 JSON。
【讨论】:
它可以在 FlashDevelop 中使用,谢谢。它只是在 Flash Pro 中不起作用。在 FlashDevelop 中,我可以将标头设置为 JSON 或 XML,并且效果很好,但在 Flash Pro 中,我使用代码设置的标头根本没有影响。以上是关于FlashDevelop 接收 XML,Flash Pro 接收 JSON的主要内容,如果未能解决你的问题,请参考以下文章