【发布时间】:2016-08-19 18:17:56
【问题描述】:
我正在使用 alamofire 上传图片。 这是注册 API,您可以在其中使用您的个人资料照片进行注册(这是我必须上传的)
所以我的代码是这样的(我将用另一个代码替换 print(JSON);这只是为了测试有什么问题)
func makeUploadRequest(url: String?) {
let imageData = NSData(data: UIImageJPEGRepresentation(self.userImage.image!, 1)!)
Alamofire.upload(.POST, url!, headers: ["Content-Type":"application/json"], multipartFormData: { multipartFormData in
multipartFormData.appendBodyPart(data: imageData, name: "image_file_1")
}, encodingCompletion: {
encodingResult in
switch encodingResult {
case .Success(let upload, _, _):
upload.responseJSON { (JSON) in
print(JSON)
}
case .Failure(let encodingError):
//Show Alert in UI
print(encodingError)
}
})
}
但是当我运行这段代码时,我遇到了这条消息:
FAILURE: Error Domain=NSCocoaErrorDomain Code=3840 "Invalid value around
character 0." UserInfo={NSDebugDescription=Invalid value around character 0.}
我知道为什么会收到此消息,因为响应不是 JSON 格式。 但响应实际上是 JSON
{
result: "success",
msg: "",
data: {...}
}
当我使用 URL 测试 API 时,它工作得很好。
当我使用 .responseString 而不是 .responseJSON 时:它说明了 ASP.NET
.响应:
(Optional(<NSMutableURLRequest: 0x7f8353217d50> { URL: url }),
Optional(<NSHTTPURLResponse: 0x7f8353099040> { URL: url }
{ status code: 500, headers {
"Cache-Control" = private;
"Content-Length" = 5136;
"Content-Type" = "text/html; charset=utf-8";
Date = "Tue, 26 Apr 2016 06:09:03 GMT";
Server = "Microsoft-IIS/7.5";
"X-AspNet-Version" = "2.0.50727";
"X-Powered-By" = "ASP.NET";
} }), Optional(<3c68746d ... 2e2d2d3e>), nil)
有什么帮助吗?提前致谢!
【问题讨论】:
-
试试
.responseString而不是.responseJSON,你就会知道你在发送请求时犯了什么错误。 -
@Fennec 哦,我试过 .responseString 和 .response。我将用这些编辑我的问题
标签: ios json swift multipartform-data alamofire