斯威夫特:阿拉莫菲尔邮报
Posted
技术标签:
【中文标题】斯威夫特:阿拉莫菲尔邮报【英文标题】:Swift: Alamofire Post 【发布时间】:2016-07-18 23:11:47 【问题描述】:我一直在开发一个应用程序,我必须使用 alamofire 来发布。 但是,我不断收到错误,说
失败 错误:反馈提交失败。 Optional("操作无法完成。JSON无法序列化。输入数据为nil或零长度。")
我的代码是这样的
let reportJSON: [String : AnyObject] = [
"Name" : nameTextField.text!,
"Message" : reportTextView.text!
]
Alamofire.request(.POST, "API", parameters: reportJSON, encoding: .JSON).responseJSON response in
print(response.result)
guard response.result.error == nil else
print("Error: feedback submission failed.")
print(response.result.error?.localizedDescription)
return
if let responseValue = response.result.value
let recipeList = JSON(responseValue)
print(recipeList)
我对 .GET 没有任何问题,但我不知道如何使用 .POST。 任何帮助表示赞赏。
【问题讨论】:
我解决了这个问题。也许对其他人来说很明显,但我收到的数据不是 JSON 格式的。所以我不得不使用 responseData,而不是 responseJSON。 【参考方案1】:看来您没有传递正确的 URL,而不是“API”更改为帖子的有效 URL。
【讨论】:
我使用的是公司的私有 url,所以对于这个,我只是调用 API,但在我的应用程序中,它使用了正确的 url【参考方案2】:您可以使用以下方法使用 Alamofire 和 Swift 3 进行 POST 请求:
let headers = [
"Accept": "application/json",
"Authorization" : "Authorization: Bearer ", //if any
"Cookie" : "Cookie" //if any
]
let parameterDict: NSDictionary = NSDictionary.init(objects: [nameTextField.text!, reportTextView.text!], forKeys: ["Name" as NSCopying,"Message" as NSCopying])
Alamofire.request("API",method: .post, parameters: parameterDict as? [String : AnyObject] , encoding:JSONEncoding.default, headers:headers) .responseJSON response in switch response.result
case .success(let JSON):
print("Success with JSON: \(JSON)")
let response = JSON as! NSDictionary
case .failure(let error):
print("Request failed with error: \(error)")
【讨论】:
【参考方案3】:您可以使用以下代码对 post 方法进行 JSON 解析。
Alamofire.request("URL" , method : .post,
headers: headers)
.responseJSON response in
// do whatever you want here
switch response.result
case .failure(let error): break
self.popupp(elrtdata : "Please try again latter.")
case .success(let responseObject):
if((response.result.value) != nil)
do
let swiftyJsonVar = JSON(response.result.value!)
print(swiftyJsonVar)
【讨论】:
以上是关于斯威夫特:阿拉莫菲尔邮报的主要内容,如果未能解决你的问题,请参考以下文章
无法调用非函数类型“HTTPURLResponse?”的值阿拉莫菲尔 4,斯威夫特 3