php - Swift3:参数除以 "/"的HTTP POST请求

标签 php ios swift swift3 httprequest

这是服务器(使用 codeigniter)接受的可接受的 POST 请求。

如图所示,它不接受键,只接受值。

第一个值以“/”开头,值之间使用“/”。

http://example.com/index.php/api/signup/value01/value02/value03

我有这段代码,是用 Swift3 编写的。

let serverUrl = "http://example.com/index.php/api/signup"
let parameterString = "/value01/value02/value03"

let url: URL = URL(string: serverUrl)!
let session = URLSession.shared
let request = NSMutableURLRequest(url: url)
request.httpMethod = "POST"
request.cachePolicy = NSURLRequest.CachePolicy.reloadIgnoringCacheData
request.httpBody = parameterString.data(using: String.Encoding.utf8)

let task = session.dataTask(with: request as URLRequest, completionHandler: {(data, response, error) in 

}) task.resume()

它得到一个错误,服务器响应它没有收到任何参数。

但是,如果我将下面的代码复制粘贴到浏览器中,它会完美运行。

http://example.com/index.php/api/signup/value01/value02/value03

swift3 代码适用于另一台服务器,它接受以这种方式编写的 POST 请求。

http://example.com/api?key=value&key=value

最佳答案

谢谢@Tj3n @Leo Dabus @GoodSp33d!

根据您的建议,我能够解决问题。

服务器 php 还对某些字符串值使用“URL 编码 RFC 1738(例如,“%E6%84%9B”表示“爱”)”。

所以,我加了

let newString = oldString.addingPercentEncoding(withAllowedCharacters:NSCharacterSet.urlQueryAllowed)!

对一些字符串值进行编码,问题就解决了。

所以,这是简化版的解决方案。

let serverUrl = "http://example.com/index.php/api/signup/value01/value02/value03"

let url: URL = URL(string: serverUrl)!
let session = URLSession.shared
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.cachePolicy = NSURLRequest.CachePolicy.reloadIgnoringCacheData

let task = session.dataTask(with: request as URLRequest, completionHandler: {(data, response, error) in 

}) task.resume()

这是我的代码发送的真实 POST 请求 url。

http://example.com/index.php/api/signup/1282283772/none/0204291/%E6%84%9B/0/70/null

关于php - Swift3:参数除以 "/"的HTTP POST请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40733158/

相关文章:

Swift CSVImporter 无法在属性中使用实例成员路径

php - 如何在html中将像素转换为磅值?

php - 获取所有未关注用户 2 的用户

php - Zend Framework - 直接使用 SQL

ios - 如何在 Swift 3 的 UIWebview 中 session 过期?

ios - 我怎样才能使我的 map View 居中,以便选定的图钉不在 map 的中间,而是在 map 的 1/3 处?

javascript - 如果语句为真,则在加载页面上显示隐藏 div

ios - 如何检测音效何时播放完毕?

xcode - UIColor.blackColor() 比标签栏上的黑色要少一些

swift - tvOS 中的 CloudKit 订阅