2015-01-23 3 views
2

Я создал службу идентификации языка на Bluemix и я пытаюсь вызвать его с помощью Р.Вызов Watson API из R

enter image description here

http://www.ibm.com/smarterplanet/us/en/ibmwatson/developercloud/apis/#!/language-identification/identify

Это код, который я использую:

library(httr) 
login <- "https://gateway.watsonplatform.net/laser/service/api/v1/txtlid/bb0e9e07-cf44-4e95-a5a1-3fb0d53ac98f" 
pars <- list(
    sid="lid-generic", 
    txt="how are you" 
) 
POST(login, authenticate("my_username", "[email protected]"), body = pars) 

Ответ, который я получаю, конечно, не ожидается, с ошибкой 401. Кто-нибудь знает, что я делаю неправильно здесь?

результат я получаю от этого:

Response [https://gateway.watsonplatform.net/laser/service/api/v1/txtlid/bb0e9e07-cf44-4e95-a5a1-3fb0d53ac98f] 
    Date: 2015-01-23 12:29 
    Status: 401 
    Content-type: text/html 
    Size: 252 B 
--------------------------4bd32c1a987ed099 
Content-Disposition: form-data; name="sid" 

lid-generic 
--------------------------4bd32c1a987ed099 
Content-Disposition: form-data; name="txt" 

how are you 
--------------------------4bd32c1a987ed099-- 
+0

Вы уверены, что это действительно правильный URL? Кажется, это идентификатор сеанса в конце? Возможно, https://gateway.watsonplatform.net/laser/service/api/v1/txtlid/0 будет работать лучше? – ckluss

+0

Я фактически забыл две вещи: , чтобы добавить параметр rt, который используется для указания возврата. pars отправляется как форма-urlencoded – aruizga

ответ

1

HTTP 401 указывает на проблемы аутентификации; предположительно у вас есть идентификатор пользователя/пароль, который был присвоен вашему экземпляру службы при его создании. Вам нужно будет пройти их в качестве идента/пароля на HTTP-вызов в R.

Вы, кажется, делают, что в вашем коде:

POST(login, authenticate("my_username", "[email protected]"), body = pars) 

Интересно, если вы просто скопировал неправильный идентификатор пользователя/пароль в эти значения в вызове authenticate().

2

Вот некоторые "R" фрагменты кода здесь, которые могут быть полезны: https://github.com/rustyoldrake/R_Scripts_for_Watson

Вкратце - синтаксис ниже показывает аутентификацию с "username_password" с помощью GetURL (RCurl) и POST (HTTR)

### Initialize Creds and URL 
base_url = "https://gateway.watsonplatform.net/dialog-beta/api/v1" 
username = "9XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXX" # from Bluemix Service Credentials 
password = "123123123123" 
username_password = paste(username,":",password,sep="") 


###### FUNCTION - CHECK CLASSIFIER STATUS (DIALOG Example) 
watson.nlc.checkclassifierstatus <- function(classifier_id) { 
    return(
    getURL(paste(base_url,classifier_id,sep=""),userpwd = username_password) 
) 
} 

###### FUNCTION CREATE NEW CLASSIFIER (NLC Example) 
watson.nlc.createnewclassifier <- function(file,classifiername) { 
    return(POST(url="https://gateway.watsonplatform.net/natural-language-classifier/api/v1/classifiers", 
     authenticate(username,password), 
     body = list(training_data = upload_file(file), 
        training_metadata = paste("{\"language\":\"en\",\"name\":",classifiername,"}",sep="") 
     )))}