【问题标题】:How to send PUT HTTP Request in Flex如何在 Flex 中发送 PUT HTTP 请求
【发布时间】:2010-09-04 06:22:15
【问题描述】:

我想在一个 URL 上发送 HTTP PUT 请求,以通过 API 更新 XML 的内容。

网址是这样的:https://domainname.com/someurls/id.xml

我想更新该内容。

但是当我发送这个 PUT 请求时,我在 Flex 4 的网络监视器中看到它在这个 web 上作为 POST 请求进行,而我在 HTTPService 变量中将方法设置为 PUT。

所以我得到了错误。 那么有什么方法可以在网络上发送 PUT 请求吗? 或者 是否有任何特殊的标题来设置 PUT 方法? 我已经尝试过方法头,但它不起作用....

请帮帮我.....

【问题讨论】:

    标签: apache-flex actionscript-3 flex4 xmlhttprequest


    【解决方案1】:

    我找到了在 flex 中使用 HTTPSerivce 发送 put 和 delete 服务的解决方案。

    您只需使用服务方法 POST 再发送一个标头。

    您必须在 POST 方法中发送数据,并附加一个标头 X-HTTP-Method-Override 和值作为 PUT 或 DELETE。

    您的服务将作为 PUT 或 DELETE 发送。

    谢谢......

    【讨论】:

    • 在使用“解决方案”这个短语时应该更加谨慎。此方法取决于实际支持此自定义标头的服务器,该标头由 Google 和 MS 几年前引入(code.google.com/apis/gdata/docs/2.0/basics.html#UpdatingEntry)。不过,+1,因为这在支持它的情况下很有用(例如,你的;)。
    • Amazon S3 是否支持 X-HTTP-Method-Override?​​span>
    【解决方案2】:

    虽然 Mitul 的响应对我也有效,但通过执行以下操作,我能够使 PUT 和 DELETE 请求正常工作。

    var urlLoader:URLLoader = new URLLoader();
                var urlString:String = "https://www.google.com/arbitraryUrl.json";
                var urlRequest:URLRequest = new URLRequest(urlString);
                urlRequest.method = URLRequestMethod.POST;
    
                var variables:URLVariables = new URLVariables();
                variables._method = "DELETE";
                urlRequest.data = variables;
    
                urlLoader.load(urlRequest); 
    

    确实是相同的概念。不同的方式去做。希望这对某些人有所帮助。

    【讨论】:

    • 但是您真的是在谈论网络浏览器中的 Flash 还是 Adob​​e Air?
    【解决方案3】:

    由于底层 Flash 播放器,Flex 不支持 PUT。有关限制,请参阅 this article

    有一个workaround here。但是,如果服务器和客户端都在您的控制之下,我建议只使用GETPOST。 Flex 并不适合真正的 RESTful 客户端。 (比如发一个参数put=true的帖子)

    【讨论】:

    • +1 不支持。虽然我很确定这实际上是浏览器的限制,而不是 Flash Player 的直接错误。
    • 好吧,我不知道。浏览器确实支持 PUT。例如,我认为 Java 小程序可以使用 PUT。
    • 并非所有浏览器都支持 PUT/DELETE,当然现代浏览器支持这些东西,但并非所有旧浏览器都支持。 Silverlight 有同样的限制,至少在前 2 个版本中,(我现在不确定,我认为他们可能已经解决了它。)不过,我对 Java Applet 的了解并不多。无论哪种方式,当我们对此有适当的支持时,我们都会变得更好。
    • 好吧,毕竟实现它并不难。 HTTP 是一个简单的协议。
    • 是的,我已经找到了……我在同一个网站上找到了……但是感谢您的回复……非常感谢……
    猜你喜欢
    • 2012-07-09
    • 1970-01-01
    • 2010-11-06
    • 1970-01-01
    • 1970-01-01
    • 2020-12-11
    • 1970-01-01
    • 1970-01-01
    • 2022-12-25
    相关资源
    最近更新 更多