2016-05-31 3 views
3

Я работаю с IBM Watson Tone Analyzer API с помощью Swift. Я попытался следующий код:IBM Watson Tone Analyzer API с Swift

override func viewDidLoad() 
    { 
     print("hello") 
     super.viewDidLoad() 
     let username = "USERNAME" 
     let password = "PASSWORD" 
     let versionDate = "2016-05-19" // use today's date for the most recent version 
     let service = ToneAnalyzer(username: username, password: password, version: versionDate) 

     let failure = { (error: NSError) in print(error) } 
     service.getTone("Text that you want to get the tone of", failure: failure) { responseTone in 
      print(responseTone.documentTone) 
     } 

    } 

Для этого, я получаю следующее сообщение об ошибке:. Error Domain = com.alamofire.error код = -6004 «Данные не могут быть сериализован Не удалось разобрать ответ JSON Нет. информация об ошибках была предоставлена ​​во время сериализации ». UserInfo = {NSLocalizedFailureReason = Данные не могут быть сериализованы. Не удалось проанализировать ответ JSON. Во время сериализации не было предоставлено никакой информации об ошибке.}

Я прочитал документацию, но это не помогает решить эту проблему.

ответ

1

Вы, кажется, используете какую-то библиотеку? Если это так, вероятнее всего, номер версии изменился, и вам нужно это установить. More details about that here.

Вот пример кода, который я сделал, который работает (простите меня, мои знания Swift довольно простые).

//: Playground - noun: a place where people can play 

import UIKit 
var username = "<SERVICE USERNAME HERE>" 
var password = "<SERVICE PASSWORD HERE>" 
var endpoint = "https://gateway.watsonplatform.net/tone-analyzer/api/v3/tone?version=2016-05-19&text=" 

var sampleText = "I am really excited to be working with Watson!" 

// ------------------------------------------------------------------- 

var authString = username + ":" + password 
var authData = authString.dataUsingEncoding(NSASCIIStringEncoding) 
var authValue = "Basic " + authData!.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0)) 

var toneUrl = endpoint + sampleText.stringByAddingPercentEncodingWithAllowedCharacters(.URLHostAllowedCharacterSet())! 
let url = NSURL(string: toneUrl) 

let config = NSURLSessionConfiguration.defaultSessionConfiguration() 
config.HTTPAdditionalHeaders = ["Authorization" : authValue] 
let session = NSURLSession(configuration: config) 

var taskIsRunning = true; 
let task = session.dataTaskWithURL(url!) { 
    (let data, let response, let error) in 
    if let httpResponse = response as? NSHTTPURLResponse { 
     do { 
      let json = try NSJSONSerialization.JSONObjectWithData(data!, options: .AllowFragments) 

      // Work with JSON object. 
     } 
     catch { 
      print("Problem serialising JSON object") 
     } 
    } 
    taskIsRunning = false 
} 

task.resume() 
while (taskIsRunning) { 
    sleep(1) 
} 
+0

Awesome! Дайте мне знать, как вы это сделали (документация/видео)? Я также пытаюсь использовать оценки личности и другие API – user2609410

+0

Я работаю в группе Watson. Вы найдете, что приведенный выше код должен работать с любыми другими службами (GET-вызовы) с небольшой модификацией. В соответствующих документах API услуг есть образцы, которые вы можете использовать. –

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