前提・実現したいこと
Google Natural Languageを利用して結果を取得する関数をSwiftで作成中です。
リクエストを飛ばすところまでは実装できたのですが、上手くいかず。
お恥ずかしながら、お力添えのほどお願いいたします。。
発生している問題・エラーメッセージ
下記のレスポンスが返ってきます。
リクエストが "
ではなく \"
として認識されてしまうようです。。
{ "error": { "code": 400, "message": "Invalid JSON payload received. Unknown name \"requests\": Cannot find field.", "status": "INVALID_ARGUMENT", "details": [ { "@type": "type.googleapis.com/google.rpc.BadRequest", "fieldViolations": [ { "description": "Invalid JSON payload received. Unknown name \"requests\": Cannot find field." } ] } ] } }
該当のソースコード
Swift
1 static let session = URLSession.shared 2 static let googleAPIKey = "XXXXXX" 3 static let googleURL = URL(string: "https://language.googleapis.com/v1/documents:analyzeEntities?key=(googleAPIKey)")! 4 5 static func createRequest(with text: String) { 6 // Create our request URL 7 8 var request = URLRequest(url: googleURL) 9 request.httpMethod = "POST" 10 request.addValue("application/json", forHTTPHeaderField: "Content-Type") 11 request.addValue(Bundle.main.bundleIdentifier ?? "", forHTTPHeaderField: "X-Ios-Bundle-Identifier") 12 13 // パースするJSON文字列 14 let requests = [ 15 "requests": [ 16 "encodingType": "UTF8", 17 "document": [ 18 "type": "PLAIN_TEXT", 19 "content": "(text)" 20 ] 21 ] 22 ] 23 24 // JSON配列をJSONデータに変換 25 if let data = try? JSONSerialization.data(withJSONObject: requests, options: .prettyPrinted), 26 let req = String(data: data, encoding: .utf8) { 27 // リクエストデータの設定 28 request.httpBody = data 29 } 30 31 // use NSURLSessionDataTask 32 let task = URLSession.shared.dataTask(with: request, completionHandler: {data, response, error in 33 if (error == nil) { 34 // 成功 35 let result = NSString(data: data!, encoding: String.Encoding.utf8.rawValue)! 36 37 } else { 38 // 失敗 39 } 40 }) 41 task.resume() 42 }
補足情報(FW/ツールのバージョンなど)
Swift4.2
実際はgoogleAPIKey = "XXXXXX"
を適切に設定しています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/06 14:13