Авторизация C # Watson Visual Recognition API

Пытаюсь заставить Watson Visual Recognition работать с C #, но я получаю несанкционированную ошибку при попытке классифицировать изображение через API. Учетные данные, которые я использую, - это «Автоматически созданные учетные данные службы».

Ошибка, которую я получаю: ServiceResponseException: запрос API завершился неудачно с кодом состояния Unauthorized: Unauthorized

Вот мой код:

class Program
{
    static void Main(string[] args)
    {
        string apiKey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
        string versionDate = "2018-03-19";
        string endpoint = "https://gateway.watsonplatform.net/visual-recognition/api";

        VisualRecognitionService visualRecognition = new VisualRecognitionService(apiKey, versionDate);
        visualRecognition.SetEndpoint(endpoint);

        // throws error here
        var result = visualRecognition.Classify(url: "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d9/Collage_of_Nine_Dogs.jpg/1023px-Collage_of_Nine_Dogs.jpg"); 
    }
}

Кроме того, дайте мне знать, могу ли я предоставить дополнительную информацию, которая может помочь


person jmac    schedule 22.08.2018    source источник
comment
comment
Спасибо за комментарии, я нашел решение. @Gauravsa, URL-адрес которого изменяет ошибку на Запрещено: Несанкционированный. Не было необходимости экранировать '/' в URL-адресе, но я полагаю, что это хорошая практика. Еще раз спасибо   -  person jmac    schedule 22.08.2018


Ответы (1)


Хорошо, я нашел решение, посмотрев на этот ответ для реализации node.js: Watson Visual Recognition - Неавторизовано

Проблема заключалась в том, что мне нужно было использовать Iam Api Key для аутентификации, что можно сделать следующим образом:

class Program
{
    static void Main(string[] args)
    {
        string apiKey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
        string versionDate = "2018-03-19";
        string endpoint = "https://gateway.watsonplatform.net/visual-recognition/api";

        VisualRecognitionService visualRecognition = new VisualRecognitionService(apiKey, versionDate);
        visualRecognition.SetEndpoint(endpoint);

        // updated to include token options with Iam Api Key
        TokenOptions options = new TokenOptions
        {
            IamApiKey = apiKey
        };
        visualRecognition.SetCredential(options);
        // end edit

        var result = visualRecognition.Classify(url: "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d9/Collage_of_Nine_Dogs.jpg/1023px-Collage_of_Nine_Dogs.jpg");
    }
}

Надеюсь, это поможет любому, у кого есть аналогичная проблема.

person jmac    schedule 22.08.2018