来自Swift的Appspot.com API

时间:2018-11-08 05:56:01

标签: swift google-cloud-platform google-translation-api

我正在开发一个iOS应用,该应用使用Google Translate API将日语句子翻译为英语。 我可以使用'w'命令从API提取翻译后的数据,但是现在很难使用Swift来获取数据。

以下是我使用的'r'命令。

curl

但是,下面的快速代码在curl中只有curl -X POST \ > https://XXXXX.appspot.com/api/translate \ > -H 'Postman-Token: XXXXX' \ > -H 'cache-control: no-cache' \ > -H 'content-type: multipart/form-data; boundary=----XXXXX' \ > -F 'text=私はあなたが好きです。' \ > -F target_lang=en \ > -F text_lang=ja

nil

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

我通过Alamofire4解决了这个问题。 看来“ multipartFormData”是此问题的关键。

    let reqUrl = "XXX"
    let originalText = sendingText.data(using: .utf8)!
    let targetLang = "en".data(using: .utf8)!
    let textLang = "ja".data(using: .utf8)!

    Alamofire.upload(
        multipartFormData: { multipartFormData in
            multipartFormData.append(originalText, withName: "text", mimeType: "text/plain")
            multipartFormData.append(targetLang, withName: "target_lang", mimeType: "text/plain")
            multipartFormData.append(textLang, withName: "text_lang", mimeType: "text/plain")
    }, to: reqUrl) { (encodingResult) in
        switch encodingResult {
        case .success(let upload, _, _):
            upload.responseJSON { response in
                if !response.result.isSuccess {
                    print("# ERROR")
                } else {
                    print("# SUCCESS")
                    if let json = response.result.value as? [String: Any], let translatedText = json["translated_text"] as? String {
                        print(translatedText)

                }
            }
        case .failure(let encodingError):
            print(encodingError)
        }
    }