我正在开发一个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
有人可以帮助我吗?
答案 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)
}
}