【问题标题】:I would like to use an API from mashape in my flash As3 app我想在我的 flash As3 应用程序中使用来自 mashape 的 API
【发布时间】:2015-10-24 05:58:07
【问题描述】:

我想在 ActionScript 中加载一个 api。在这个链接https://market.mashape.com/vivekn/sentiment-3 curl请求是这样的:

curl -X POST --include 'https://community-sentiment.p.mashape.com/text/' \
-H 'X-Mashape-Key: YourPrivateApiKeyHere' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-H 'Accept: application/json' \
-d 'txt=Today is  a good day'

我将如何在 AS3 中使用它。提前致谢。

【问题讨论】:

    标签: actionscript-3 curl mashape


    【解决方案1】:

    您可以使用URLLoader 类进行 REST 调用。

    将 api 的自定义标头映射到 URLRequestHeader 类,并将自定义 http 选项映射到 URLRequest 类。

    示例跟踪输出:

    [trace] {
    [trace]   "result": {
    [trace]     "confidence": "72.7805",
    [trace]     "sentiment": "Negative"
    [trace]   }
    [trace] }
    [trace] 72.7805
    [trace] Negative
    

    ActionScript 剪切/粘贴示例(只需添加您的私有意外 api 密钥):

    package {
        import flash.display.Sprite;
        import flash.text.TextField;
        import flash.events.Event;
        import flash.events.HTTPStatusEvent;
        import flash.events.SecurityErrorEvent;
        import flash.events.IOErrorEvent;
        import flash.net.URLLoader;
        import flash.net.URLRequest;
        import flash.net.URLRequestHeader;
        import flash.net.URLRequestMethod;
        import flash.net.URLLoaderDataFormat;
    
        public class Main extends Sprite {
            var textField1:TextField = new TextField();
            var textField2:TextField = new TextField();
            var textField3:TextField = new TextField();
    
            public function Main() {
                textField1.text = "Today is a bad day";
                addChild(textField1);
                textField2.x = 150;
                addChild(textField2);
                textField3.x = 200;
                addChild(textField3);
    
                var apiKey:String = "your api key here";
                var url:String = "https://community-sentiment.p.mashape.com/text/";
                var headers:Array = [
                    new URLRequestHeader("X-Mashape-Key", apiKey),
                    new URLRequestHeader("Accept", "application/json"),
                    new URLRequestHeader("Content-Type","application/x-www-form-urlencoded")
                ];
                var request:URLRequest = new URLRequest(url);
                request.method = URLRequestMethod.POST;
                request.requestHeaders = headers;
                request.data = "txt=" + textField1.text;
    
                var urlLoader:URLLoader = new URLLoader();
                urlLoader.dataFormat = URLLoaderDataFormat.TEXT;
                urlLoader.addEventListener(Event.COMPLETE, httpRequestComplete, false, 0, true);
                urlLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, httpRequestError, false, 0, true);
                urlLoader.addEventListener(IOErrorEvent.IO_ERROR, httpRequestError, false, 0, true);
                urlLoader.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler, false, 0, true);
                urlLoader.load(request);
            }
    
            private function httpRequestComplete(event:Event):void {
                trace(event.target.data);
                var response:Object = JSON.parse(event.target.data);
                trace(response.result.confidence);
                trace(response.result.sentiment);
    
                textField2.text = response.result.confidence;
                textField3.text = response.result.sentiment;
            }
    
            private function httpRequestError(event:IOErrorEvent):void {
                trace("Error: " + event.errorID + " " + event.text);
            }
    
            function httpStatusHandler(event:HTTPStatusEvent):void {
                if (event.status != 200) {
                    trace("httpStatusHandler: " + event.status);
                }
            }
        }
    }
    

    【讨论】:

    • 谢谢,这很有帮助
    【解决方案2】:

    我不会对@RobertN 的答案添加太多,只是一些小解释。

    要使用 ActionScript 执行 HTTP 请求,您需要:

    // 创建一些变量 var url_variables:URLVariables = new URLVariables(); url_variables.txt = '你好'; // 设置 HTTP 请求的 URL var url_request:URLRequest = new URLRequest('https://community-sentiment.p.mashape.com/text/') // 设置内容类型 url_request.contentType = '应用程序/x-www-form-urlencoded'; // 设置请求方法 url_request.method = URLRequestMethod.POST; // 设置一些请求头 url_request.requestHeaders.push(new URLRequestHeader('X-Mashape-Key', 'your-key-here')); url_request.requestHeaders.push(new URLRequestHeader('Accept', 'application/json')); // 设置变量 url_request.data = url_variables; var url_loader:URLLoader = new URLLoader(); url_loader.addEventListener(Event.COMPLETE, on_Complete); url_loader.load(url_request); 函数 on_Complete(e:Event): 无效 { 跟踪(e.target.data); //给出: // { // “结果”: { // "信心": "50.0000", // “情绪”:“中性” // } // } }

    有关网络服务请求的更多信息,请查看here

    希望能有所帮助。

    【讨论】:

    • 非常感谢您的帮助
    猜你喜欢
    • 2014-03-18
    • 1970-01-01
    • 1970-01-01
    • 2011-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 2012-02-08
    相关资源
    最近更新 更多