我正在编写swift代码来向php服务器发送http post请求。但我的php脚本总是得到奇怪的帖子体,因为参数是由Option()包装的,如果我发送参数如“id = john& password = 1234”,服务器将获得Optional(id = john& password = 1234) 。但这不是我想要的,因为php无法以正常方式分析参数。我不知道这里出了什么问题;
var postString: String = "id=john&password=1111"
request.HTTPBody = (postString.dataUsingEncoding(NSUTF8StringEncoding))
println("Body will send: \(request.HTTPBody)")
var postLength:NSString = String( postString2.dataUsingEncoding(NSUTF8StringEncoding)!.length )
request.setValue(postLength, forHTTPHeaderField: "Content-Length")
request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
request.setValue("multipart/form-data", forHTTPHeaderField: "Accept")
在上面的准备代码之后,我使用dataTaskWithRequest方法发送帖子。谷歌这个问题好几天之后,我对这个未解决的问题感到疯狂。需要一个线索来解决它。请指教!
答案 0 :(得分:1)
我发现了问题!
正确的内容类型声明;
request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
错误的内容类型声明;
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
非常感谢您的建议和提示提醒!最后我理解问题不在Optional wrapped String中,而是在其他http属性中!
昨天我使用php将请求体回显到客户端进行调试,我总是把String包装成Optional,这是愚蠢的!阅读完这些评论后,我请php程序员将每个请求体记录到本地文件并检查内容.................没有可选的包装字符串。
对不起愚蠢的代码,非常感谢您的帮助!你们真棒!
答案 1 :(得分:-1)
只需更改变量并添加'!'你的变量。这样,它就不再是一个可选项了,而且你没有那种问题。
var postString: String! = "id=john&password=1111"