2016-06-08 4 views
1

В целом, я пытаюсь вызвать MS Cognitive key phrases API из Python 3.5.1 :: Anaconda 4.0.0 (32-разрядная версия). Я повсюду искал и пытался включить этот stackoverflow response.Правильное форматирование http.client.HTTPSConnection в Python

Для вызова API ключ вашей учетной записи, указанный ниже как ##, необходимо добавить from here, , однако для правильного форматирования тела вам, вероятно, не нужен ключ учетной записи. Хорошая часть приведенного ниже кода - из кода примера.

Тело запроса должно выглядеть

body = { 
    "documents": [ 
     { 
      "language": "en", 
      "id": "1", 
      "text": "One line of text." 
     }, 
     { 
      "language": "en", 
      "id": "2", 
      "text": "another line of text." 
     } 
    ] 
} 

< мой код теперь работает !!>

import sys 
import os.path 
import http.client 
import urllib.request 
import urllib.parse 
import urllib.error 
import base64 
import json 

subscription_key = '##' 

headers = { 
    'Content-Type': 'application/json', 
    'Ocp-Apim-Subscription-Key': subscription_key 
} 

#input text is: ID | text to analyze. How my input file is formatted. 
input_text = ["100|One line of text.", "101|another line of text."] 


# Inputs holds the params to call the web service in bulk. 
body = [] 

indx = 1 

for line in input_text: 
    input_text = line.split("|") 
    print ('-----\n') 
    print ("Input text is:", input_text) 
    input_text_analyze = input_text[1] 
    print ('\nInput text to be analyzed:', input_text_analyze) 
    body.append({ "language" : "en", "id" : str(indx), "text" : input_text_analyze }) 
    indx = indx + 1 

print ('-----\n') 
print ('\nBody has', body) 

print ("Calling API to get keywords...") 

body_documents = { 'documents': body } 

print ("\nParams:", body_documents) 

params = urllib.parse.urlencode({ }) 

try: 
    conn = http.client.HTTPSConnection('westus.api.cognitive.microsoft.com') 
    conn.request("POST", "/text/analytics/v2.0/keyPhrases?%s" % params, str(body_documents), headers) 
    response = conn.getresponse() 
    keyword_obj = response.read() 
    print("Returned keyword_obj is: ", keyword_obj) 
    conn.close() 
except Exception as e: 
    print("[Errno {0}] {1}".format(e.errno, e.strerror)) 

ответ

0

Я сделал 2 изменен на код выше, что позволяет ему работать. 1) Я получал свои параметры и тело. 2) Мне нужно было добавить str (body_documents) в мой пост. Обе ошибки начинающего.

Смежные вопросы