2016-05-31 11 views
3

私はSwiftを使用してIBM Watson Tone Analyzer APIを使用しています。ノー エラードメイン= com.alamofire.errorコード= -6004「のデータをシリアル化することができませんでしたJSON応答を解析するために:私は、次のコードを試してみました。このためSwiftを使用したIBM Watson Tone Analyzer API

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) 
     } 

    } 

を、私は次のエラーを取得しています。シリアル化中にエラー情報が提供されました。 UserInfo = {NSLocalizedFailureReason =データをシリアル化できませんでした。 JSONレスポンスの解析に失敗しました。シリアル化中にエラー情報が提供されていませんでした。}

私はこのドキュメントを読んでいますが、この問題の解決には役立ちません。

答えて

1

あなたは何らかの種類のライブラリを使用しているようですか?もしそうなら、最も可能性の高い原因はバージョン番号が変更されており、それを設定する必要があるということです。 More details about that here

私はそれが動作したいくつかのサンプルコードです(私を許してください、私の素早い知識はかなり基本的です)。

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

驚くばかり!どのようにあなたはそれについて(ドキュメンテーション/ビデオ)に行きましたか教えてください?私は同様にPersonality Insightsやその他のAPIを使用しようとしています – user2609410

+0

私はWatsonグループで働いています。上記のコードは、少し修正して他のサービス(GET呼び出し)のどれでも動作するはずです。関連するサービスAPIドキュメントには、使用できるサンプルがある傾向があります。 –

関連する問題