gpt4 book ai didi

php - 从 iOS 9/Swift 2.0 发送 HTTP POST 请求时,PHP 服务器未收到正确的数据

转载 作者:行者123 更新时间:2023-11-30 13:56:59 25 4
gpt4 key购买 nike

当我使用 Swift 从 iOS 发布 “username=abc&password=xyz” 到 index.php 时,我的服务器上必须收到

$_POST["用户名"]//"abc"

$_POST["密码"]//"xyz"

但我收到了

$_POST["用户名"]//可选("abc")

$_POST["password"]//可选("xyz")

在找出错误时遇到麻烦。请提出合适的解决方案。

注意: 我使用的是 Xcode 7.0.1、Swift 2.0、模拟器:iPhone 5、部署目标:iOS 9.0、服务器 = "Apache/2.4.12 (Win32) OpenSSL/1.0.1m PHP/5.6.11";

这是我的快速代码

let request = NSMutableURLRequest(URL:NSURL(string:"http://192.168.1.7/testSwiftPOST/index.php")!)
request.HTTPMethod = "POST"
let postString = "username=abc&password=xyz"
request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)
request.setValue("application/x-www-form-urlencoded; charset=utf-8", forHTTPHeaderField: "Content-Type")

let task = NSURLSession.sharedSession().dataTaskWithRequest(request){ (data, response, error) -> Void in
if let Data = data {
print(NSString(data: Data, encoding: NSUTF8StringEncoding)!) // this prints the data of the $_POST variable in the debug area
}
}
task.resume()

这是我的 php 代码

<?php
print_r($_POST);

这是我在 Xcode 调试区域的输出:

Array
(
[username] => Optional("abc")
[password] => Optional("xyz")
)

仅供引用(供您引用),我还在我的 info.plist 文件中添加了以下设置:

<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSExceptionDomains</key>
<dict>
<key>192.168.1.7/</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSExceptionMinimumTLSVersion</key>
<string>TLSv1.1</string>
<key>NSIncludesSubdomains</key>
<true/>
</dict>
</dict>
</dict>

上面的代码在带有 iOS 8.4 的 Xcode 6 中完美运行,但在升级到带有 iOS 9.0 的 Xcode 7 后问题开始

最佳答案

dataUsingEncoding 返回一个可选值。您必须在请求中发送之前将其拆开

request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)!

关于php - 从 iOS 9/Swift 2.0 发送 HTTP POST 请求时,PHP 服务器未收到正确的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33496304/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com