2015-10-24 1 views
0

Я хотел был бы загрузить api в ActionScript. Именно по этой ссылке https://market.mashape.com/vivekn/sentiment-3 Завиток запрос следующим образом:Я хотел был бы использовать API от mashape в моей вспышке As3 app

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. Заранее спасибо.

ответ

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); 
      } 
     } 
    } 
} 
+0

Спасибо, что это было очень полезно – TomMcmann

1

Я не буду добавлять столько к ответу @RobertN , только некоторые небольшие объяснения.

Чтобы выполнить запрос HTTP с помощью ActionScript, вам необходимо:

  • A URLRequest объект, который будет делать запрос HTTP.

  • A URLLoader объект, который будет загружать данные.

  • A URLVariables объект для отправки некоторых переменных с запросом HTTP.

  • Некоторые URLRequestHeader объекты для отправки некоторых пользовательских заголовков 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.

Надеюсь, что это поможет.

+0

Большое спасибо за помощь – TomMcmann