2016-05-31 16 views
3

Ich arbeite mit IBM Watson Tone Analyzer API mit Swift. Ich habe versucht, den folgenden Code:IBM Watson Tone Analyzer API mit 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) 
     } 

    } 

Dafür erhalte ich folgende Fehlermeldung:. Fehler Domain = com.alamofire.error-Code = -6004 „Daten nicht serialisiert werden könnten Fehler beim JSON-Antwort analysieren Nein. Fehlerinformationen wurden während der Serialisierung bereitgestellt. " UserInfo = {NSLocalizedFailureReason = Daten konnten nicht serialisiert werden. Fehler beim Analysieren der JSON-Antwort Während der Serialisierung wurden keine Fehlerinformationen angegeben.}

Ich habe die Dokumentation gelesen, aber es hilft nicht bei der Lösung dieses Problems.

Antwort

1

Sie scheinen eine Art von Bibliothek zu verwenden? Wenn dies der Fall ist, hat sich die Versionsnummer geändert und Sie müssen diese festlegen. More details about that here.

Hier ist ein Beispielcode, den ich getan habe (verzeih mir, mein Swift-Wissen ist ziemlich einfach).

//: 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

Super! Lass es mich wissen, wie hast du das gemacht (Dokumentation/Videos)? Ich versuche ähnlich, Persönlichkeits-Einblicke und andere APIs zu verwenden – user2609410

+0

Ich arbeite in Watson-Gruppe. Sie werden feststellen, dass der obige Code für einige der anderen Dienste (GET-Aufrufe) mit ein wenig Modifikation funktionieren sollte. Die zugehörigen Service-API-Dokumente enthalten in der Regel Muster, die Sie verwenden können. –

Verwandte Themen