- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我不知道如何正确发送 POST 参数。
我的 Swift 3:
let parameters = ["name": "thom", "password": "12345"] as Dictionary<String, String>
let url = URL(string: "https://mywebsite.com/test.php")!
let session = URLSession.shared
var request = URLRequest(url: url)
request.httpMethod = "POST"
do
{
request.httpBody = try JSONSerialization.data(withJSONObject: parameters)
}
catch let error
{
print(error.localizedDescription)
}
request.addValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
request.addValue("application/json", forHTTPHeaderField: "Accept")
let task = session.dataTask(with: request as URLRequest, completionHandler:
{
data, response, error in
guard error == nil else
{
print(error as Any)
return
}
guard let data = data else
{
return
}
do
{
if let json = try JSONSerialization.jsonObject(with: data, options: .mutableContainers) as? [String: Any]
{
print(json)
print(json["post"]!)
}
else
{
print("no json")
}
}
catch let error
{
print(error.localizedDescription)
}
})
task.resume()
我的 PHP:
<?php
header('Content-Type: application/json');
if(empty($_POST)) echo json_encode(array('post'=>'empty'));
else echo json_encode($_POST+array('post'=>'not_empty'));
exit;
如果我将内容类型 header (在 Swift 中)设置为 application/json
我得到:
["post": empty]
empty
如果我将其设置为 application/x-www-form-urlencoded
我得到:
["{\"name\":\"thom\",\"password\":\"12345\"}": , "post": not_empty]
not_empty
如何将字典作为 $_POST 键/值对而不是 json_encoded 字符串发送到我的服务器?
最佳答案
您希望将请求百分比转义为 x-www-form-urlencoded
请求,如下所示:
let parameters = ["name": "thom", "password": "12345"]
let url = URL(string: "https://mywebsite.com/test.php")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.updateHttpBody(with: parameters)
request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
let task = session.dataTask(with: request) { data, response, error in
guard let data = data, error == nil else {
print("\(error)")
return
}
// handle response here
}
task.resume()
哪里
extension URLRequest {
/// Populate the `httpBody` of `application/x-www-form-urlencoded` request.
///
/// - parameter parameters: A dictionary of keys and values to be added to the request
mutating func updateHttpBody(with parameters: [String : String]) {
let parameterArray = parameters.map { (key, value) -> String in
return "\(key.addingPercentEncodingForQueryValue()!)=\(value.addingPercentEncodingForQueryValue()!)"
}
httpBody = parameterArray.joined(separator: "&").data(using: .utf8)
}
}
extension String {
/// Percent escape value to be added to a HTTP request
///
/// This percent-escapes all characters besides the alphanumeric character set and "-", ".", "_", and "*".
/// This will also replace spaces with the "+" character as outlined in the application/x-www-form-urlencoded spec:
///
/// http://www.w3.org/TR/html5/forms.html#application/x-www-form-urlencoded-encoding-algorithm
///
/// - returns: Return percent escaped string.
func addingPercentEncodingForQueryValue() -> String? {
let generalDelimitersToEncode = ":#[]@?/"
let subDelimitersToEncode = "!$&'()*+,;="
var allowed = CharacterSet.urlQueryAllowed
allowed.remove(charactersIn: "\(generalDelimitersToEncode)\(subDelimitersToEncode)")
return addingPercentEncoding(withAllowedCharacters: allowed)?.replacingOccurrences(of: " ", with: "+")
}
}
关于php - HTTP Post 参数以 json 编码传递给 $_POST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41091961/
PHP If 语句 if (!$_POST) - !$_POST 是什么意思? 例如,在我正在查看的一些遗留代码中,代码如下: '; if (
这个问题在这里已经有了答案: What is the use of the @ symbol in PHP? (11 个答案) 关闭 8 年前。 我正在寻找在用户刷新浏览器后将用户输入保存在表单中的
我有一个简单的表单,如下所示: 当我尝试通过 if($_POST) 接收从该表单发送的数据时,我失败了,但是当尝试使用 isset 时,我成功了。 if($_POST){ echo
我目前正在从一次严重的 XSS 攻击中恢复过来,并且意识到我从未对网站上多个表单的输入进行过清理。我使用 Notepad++ 的“在文件中查找”功能在我所有的 PHP 文件中搜索 $_POST,得到了
我已经为客户端创建了一个 Yii 应用程序,它在本地和测试期间使用的我的服务器上都运行良好,没有任何问题。客户端已将应用程序移动到他们的服务器,这是它将托管的地方,并且当输入一个表单上的一个变量(只有
我正在尝试将此表格用于: 如果任何 $_POST 变量等于任何其他 $_POST 变量抛出错误。 如果只有几个,那不是问题,但我有大约 20 个左右所以如果我想这样做,我将不得不像这样 但这
首先我要说的是,我在 Google 上无休止地搜索帮助,并且在过去的 x 小时内确实花费了调试相同的错误,但我就是无法弄清楚。 我正在关注this tutorial关于如何为我的 Android 应用
应该这样用if(isset($_POST['submit'])) { } 提交表单时 if($_POST[submit])与 if(isset($_POST[submit])
这是我的代码: if(isset($_POST['make']) && isset($_POST['year']) && isset($_POST['mileage'])) {
如果我使用此代码将数字作为输入,它可以正常工作 Hours: Hours: Minutes: Hours: Minutes
因此,我获取 jquery 日期选择器和下拉选择菜单的状态,并尝试使用 AJAX 将这两个变量发送到另一个 php 文件。 var_dump($_POST); 网页上的结果: array(0)
我想将数据附加到已有的表单中。单击“提交”按钮时使用 JQUERY,如下所示。 $('#submit-buildaboat').click(function(){ console.log(
我目前正在编写一个使用表单和 PHP $_POST 数据的 Web 应用程序(到目前为止是标准的!:))。但是,(这可能是一个菜鸟查询)我刚刚意识到,从理论上讲,如果有人将 HTML 文件与假表单放在
我发现自己现在正在研究很多其他人的代码。我注意到某些代码中的 if (isset($_POST)) 并确保修复它。 (它将始终评估 true)。然后我开始看到这个: if ($_POST) 经过深思熟
如果我将数据发布到我的 Web 服务器上的测试脚本(来自远程源),则 $_POST 数组为空,但 HTTP_RAW_POST_DATA 具有发布的信息。 使用表单在本地发布的数据可以正常工作。 服务器
我遇到了一个非常奇怪的行为。假设我有以下两个 (src 属性等于 name 属性): 我的问题是:为什么第一个输入提交而第二个不提交?我正在使用 CakePHP,如果我点击第二张图片,$this
我可能有点厚,但我似乎找不到这个问题的答案。我正在从一台启用了注册全局变量的服务器转移到一台关闭它的服务器。这是一件好事,但不幸的是,多年来我一直习惯于使用注册全局变量,这导致我编写了草率的代码。我现
我无法弄清楚以下 $_POST 请求的问题所在。问题是我通过 AJAX $_POSTing 一个包含 855 条记录的数组,但我的 AJAX Controller 只接收 833。它总是接收到相同的记
这个问题已经有答案了: passing POST array to php function (3 个回答) 已关闭10 年前。 我一直在开发一个游戏项目(所以你会明白我无法发布实际的脚本),并且我正
有人知道为什么$_POST没有被设置吗? 这是一些代码。 class="even" doID; ?>"/> 我一定是忽略了一些东西。 最佳答案 如果
我是一名优秀的程序员,十分优秀!