IOS / Swift / Bluemix: преобразовать запрос curl в IBM Watson в запрос AlamoFire в Swift - PullRequest
0 голосов
/ 31 мая 2018

Я могу получить доступ к API Watson Tone Analyzer с веб-страницы, используя следующий код, написанный на PHP с использованием CURL:

   $username='long-user-name';
     $password='my-password';
     $data = json_encode(array('text' => 'All you need is love'));
$URL = 'https://gateway.watsonplatform.net/tone-analyzer/api/v3/tone?version=2016-05-19';
     $ch = curl_init();
     curl_setopt($ch, CURLOPT_URL,$URL);
     curl_setopt($ch, CURLOPT_TIMEOUT, 30); //timeout after 30 seconds
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);          
     curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
     curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
     curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
     curl_setopt($ch, CURLOPT_POST, true);
     curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

     $result=curl_exec ($ch);
     curl_close ($ch);
 echo $result;

IBM / Watson не предоставляет пример кода для доступа к API через Swift илиAlamoFire для IOS, хотя их Swift SDK, очевидно, использует AlamoFire.Я не загружаю их SDK, потому что он требует создания карт и других зависимостей, о которых люди сообщают как вызывающие проблемы.Однако вы должны иметь возможность запрашивать API с помощью AlamoFire.

Следующий код, который я пробовал, выдает ошибку 401 из-за плохой аутентификации.Может кто-нибудь из команды IBM Bluemix или где-либо еще предложить, как преобразовать вышеуказанный рабочий локон в действительный запрос AlamoFire?Заранее благодарим за любые предложения.

Мой код, который возвращает 401 для плохой аутентификации:

func postToWatson () {
            print("post to watson called")
            let url: String =  "https://gateway.watsonplatform.net/tone-analyzer/api/v3/tone?version=2016-05-19"
            let message = "All you need is love"
            var parameters = [
               "username":"my-username",
                "password":"my-password"]
            parameters["text"] = message
            Alamofire.request(url, parameters: parameters)
                .responseJSON { response in
                    print(response.request)
                    print(response.response)
                    print(response.result)
            }
        }
...