0

I would like to load an api in ActionScript. It is at this link https://market.mashape.com/vivekn/sentiment-3 The curl request is this:

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'

How would I use this in AS3. Thanks in Advance.

SushiHangover
  • 73,120
  • 10
  • 106
  • 165
Kheva Mann
  • 319
  • 4
  • 16

2 Answers2

1

You can use the URLLoader class to make REST calls.

Map the api's custom headers to URLRequestHeader classes and the custom http options to a URLRequest class.

Example trace output:

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

ActionScript cut/paste example (just add your private mishap api key):

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);
            }
        }
    }
}
SushiHangover
  • 73,120
  • 10
  • 106
  • 165
1

I'll not add so much to the answer of @RobertN, just some little explanations.

To execute a HTTP request using ActionScript, you need :

  • A URLRequest object which will do the HTTP request.

  • A URLLoader object which will downloads the data.

  • A URLVariables object to send some variables with the HTTP request.

  • Some URLRequestHeader objects to send some custom HTTP request headers.


    // 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"
    //      }
    //  }
}

For more about web service requests, take a look here.

Hope that can help.

akmozo
  • 9,829
  • 3
  • 28
  • 44