2016-05-05 4 views
0

私はビデオをEmotion API for videoに掲示していますが、私は応答を得ることができませんでした。ビデオ(JavascriptまたはRuby)のエモーションAPIを使用

Microsoft online consoleで動作させることができましたが、(1)JavaScript Ajaxまたは(2)Rubyサーバー側コードを使用してRailsアプリケーションで実装しようとすると、さまざまなエラー。

ここに私のコードです。最初はAjaxの方法で試しましたが、APIにCORSが有効になっていないという疑いがありました。だから私はRubyを試しました。成功しませんでした。

ルビーの試み:

function CallAPI(apiUrl, apiKey){ 
    console.log("API called"); 
    $(".loading").css("display", "inline-block"); 
    $.ajax({ 
     url: apiUrl, 
     beforeSend: function (xhrObj) { 
      xhrObj.setRequestHeader("Content-Type", "application/octet-stream"); 
      xhrObj.setRequestHeader("Ocp-Apim-Subscription-Key", apiKey); 
     }, 
     type: "POST", 
     data: '{"url": "http://localhost:5000/mark_zuck.mov"}', 
     processData: false, 
     success: function(response){ 
      console.log("API success"); 
      ProcessResult(response); 
      $(".loading").css("display", "none"); 
      console.log(response); 
     }, 
     error: function(error){ 
      console.log("API failed"); 
      $("#response").text(error.getAllResponseHeaders()); 
      $(".loading").css("display", "none"); 
      console.log(error); 
     } 
    }) 

はい、私は私のキーを再生成しました:

def index 
    uri = URI('https://api.projectoxford.ai/emotion/v1.0/recognizeinvideo') 
    uri.query = URI.encode_www_form({ 
    }) 

    data = File.read("./public/mark_zuck.mov") 

    request = Net::HTTP::Post.new(uri.request_uri) 
    # Request headers 
    request['Ocp-Apim-Subscription-Key'] = 'e0ae8aad4c7f4e33b51d776730cff5a9' 
    # Request body 
    request.body = data 
    request.content_type = "video/mov" 

    response = Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == 'https') do |http| 
     http.request(request) 
    end 

    puts response.body 
end 

ここに私のAjaxの試みです。これは私の要点を説明するためのものです。

+0

"*一貫してさまざまなエラーが発生*" - "エラー"とは何を意味しますか? – Uzbekjon

+0

私のajax試行で400エラーが発生し、 "Access-Control-Allow-Origin not set"エラーが発生しました。私のルビー試行は '{"エラー ":{" code ":" BadArgument "、" message ":"無効なメディアタイプ "}を返します。 –

+0

APIクライアントを正しく実装していますか? CORSはしばしばウェブサイトのコードが他の場所で働くのを防ぎます。動作中のAPIがない場合は、セレンを代わりに使用できます –

答えて

0

したがって、送信しているバイナリファイルの場合は、Content-Typeをapplication/octet-streamに設定する必要があります。

URLを使用する場合は、Content-Typeをapplication/jsonに設定する必要があります。このURLは一般に公開されている必要があります。

関連する問題