我想在我的Flash As3应用程序中使用mashape的API

时间:2015-10-24 05:58:08

标签: actionscript-3 curl mashape

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

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中使用它。在此先感谢。

2 个答案:

答案 0 :(得分: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);
            }
        }
    }
}

答案 1 :(得分:1)

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

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


    // create some variables
var url_variables:URLVariables = new URLVariables();
    url_variables.txt = 'hello';

    // set the URL of the HTTP request
var url_request:URLRequest = new URLRequest('https://community-sentiment.p.mashape.com/text/')
    // set the content type
    url_request.contentType = 'application/x-www-form-urlencoded';
    // set the request method
    url_request.method = URLRequestMethod.POST;
    // set some request headers
    url_request.requestHeaders.push(new URLRequestHeader('X-Mashape-Key', 'your-key-here'));
    url_request.requestHeaders.push(new URLRequestHeader('Accept', 'application/json'));

    // set the variables
    url_request.data = url_variables;

var url_loader:URLLoader = new URLLoader();
    url_loader.addEventListener(Event.COMPLETE, on_Complete);
    url_loader.load(url_request);

function on_Complete(e:Event): void 
{
    trace(e.target.data);
    // gives :
    //  {
    //      "result": {
    //          "confidence": "50.0000", 
    //          "sentiment": "Neutral"
    //      }
    //  }
}

有关网络服务请求的详情,请查看here

希望可以提供帮助。