【发布时间】:2016-03-30 13:19:52
【问题描述】:
我已阅读所有其他主题,但我的问题是这些主题的混合。所以我试图通过 HTTP 快速将一些内容发送到 php 服务器。在我将图像 base64 内容附加到 http 标记的正文之前,一切正常。我检查了 php 后端最大帖子大小,不是吗。我复制粘贴了swift生成的图片内容,粘贴到chrome中,图片就在那里,所以图片没有错误。
这是我所拥有的示例代码 让 url = NSURL(string: "https:example.com/endpoint") // 让 session = NSURLSession.sharedSession();
let request = NSMutableURLRequest(URL: url!)
request.HTTPMethod = "POST"
request.cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringCacheData
var body = "csrf_token=" + (token.stringByAddingPercentEncodingWithAllowedCharacters(.URLHostAllowedCharacterSet())! as String)
body += "&email=" + (email?.text)!
body += "&first_name=" + (firstName?.text)!
body += "&last_name=" + (lastName?.text)!
body += "&password=" + password!.text!
//body += "&image_content=" + imageContent
body += "&confirm_password=" + confirmPassword!.text!
body += "&provider=" + provider
body += "&pictureURL=" + pictureURL
request.HTTPBody = body.dataUsingEncoding(NSUTF8StringEncoding)
request.addValue("https:example.com/", forHTTPHeaderField: "origin")
request.addValue("https:example.com/endpoint", forHTTPHeaderField: "referrer")
let task = session.dataTaskWithRequest(request) {
(
let data, let response, let error) in
guard let _:NSData = data, let _:NSURLResponse = response where error == nil else {
print("error")
print(data)
print(response)
return;
}
let dataString = NSString(data :data!, encoding: NSUTF8StringEncoding);
print(dataString)
if ((response as! NSHTTPURLResponse).statusCode == 200) {
dispatch_async(dispatch_get_main_queue(), {
self.performSegueWithIdentifier("loginAfterSignup", sender: nil)
})
}
else {
dispatch_async(dispatch_get_main_queue(), {
print((response as! NSHTTPURLResponse).statusCode)
print("error code, could not sign up and login")
})
}
}
task.resume()
因此,当我取消注释带有 base64 字符串内容的行时,我会转到回退调用并打印“错误”。 我不知道为什么它不通过 http 发送。有我必须遵守的规则吗?附加一个大字符串后,是否必须设置某个 http 标头?我在这里错过了什么吗? 谢谢
【问题讨论】: