2017-08-07 3 views
0
 require 'net/http' 

    uri = URI('https://westus.api.cognitive.microsoft.com/vision/v1.0/analyze') 
    uri.query = URI.encode_www_form({ 
     # Request parameters 
     'visualFeatures' => 'Adult', 
     'details' => 'Celebrities', 
     'language' => 'en' 
    }) 

    request = Net::HTTP::Post.new(uri.request_uri) 
    # Request headers 
    request['Content-Type'] = 'application/json' 
    # Request headers 
    request['Ocp-Apim-Subscription-Key'] = 'caa91cccdgywtduwdxxf530' 
    # Request body 
    request.body = "http://instudy.jp/wp-content/uploads/2015/03/doraemon-coming.jpg" 

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

    puts response.body 

Je voulais vérifier la photo si les choses adultes ou pas si j'ai écrit le code. Je pense qu'il n'y a rien de mal donc je ne sais pas pourquoi l'erreur est survenue.Une erreur est survenue qui dit { "code": "BadArgument", "requestId": "XXXX", "message": "erreur de format JSON"} sur la vision par ordinateur api d'Azur

environnement: ruby 2.3.1

Répondre

0

Selon le documentaion, l'api de vision attend un URL de l'image dans la clé 'url' du corps de la demande. Dans votre cas également, vous ne transmettez pas un json valide en tant que corps de requête. Ainsi, remplacer

request.body = "http://instudy.jp/wp-content/uploads/2015/03/doraemon-coming.jpg" 

avec

request_body = Hash.new 
request_body[:url] = "http://instudy.jp/wp-content/uploads/2015/03/doraemon-coming.jpg" 
request.body = request_body.to_json 
+0

Merci à vous, je pouvais réaliser, mais est-il code plus clair? –

+0

request.body = "{\" url \ ": \" http: //instudy.jp/wp-content/uploads/2015/03/doraemon-coming.jpg \ "}" n'est pas facile à lire. –

+0

ok je vais modifier la réponse – Sajin