使用 URLSession 将数据获取到 PHP 方法 - swift
Posted
技术标签:
【中文标题】使用 URLSession 将数据获取到 PHP 方法 - swift【英文标题】:GET data to PHP method using URLSession - swift 【发布时间】:2019-01-10 09:35:06 【问题描述】:我正在尝试将一些数据从我的应用程序传递到 php 脚本,但它总是像 Could not connect to server
一样返回失败。
但是当我将链接复制到浏览器时,它像往常一样正常工作。我不知道为什么它在我的 ios 应用中不起作用。
这就是我使用 URLSession 发送请求的方式
guard let url = URL(string: "http://127.0.0.1:8000/app.php?token=\(deviceToken)") else
return
var request = URLRequest(url: url.absoluteURL)
request.httpMethod = "GET"
let task = URLSession.shared.dataTask(with: request) (data, response, error) in
if error == nil
guard let dataReq = data else
completionHandler(false, (error?.localizedDescription)!)
return
do
let json = try JSONSerialization.jsonObject(with: dataReq, options: JSONSerialization.ReadingOptions.mutableContainers) as? [String:Any]
if let jsonData = json
print("===== This is jsonData \(jsonData) =====")
else
print("===== Cannot Get JSONDATA =====")
catch
completionHandler(false, (error.localizedDescription))
else
print("===== Error SENDING REQUEST \((error?.localizedDescription)!)")
completionHandler(false, (error?.localizedDescription)!)
task.resume()
我想将名为 token 的参数传递给我的 php 脚本
这是我的 php 文件
<?php
$device = $_GET['token'];
$deviceToken = $device;
echo $device;
【问题讨论】:
127.0.0.1
是本地环回地址。我怀疑这会在模拟器中工作,它会指向设备而不是计算机。找到您的本地 IP 地址并尝试...可能从 192 开始。某事
@Scriptable 127.0.0.1
是我的本地 IP 地址。我也在我的实际设备上运行它。
您可以在没有任何互联网连接的情况下拥有127.0.0.1
地址。它是一个特殊的 IP 地址,我认为它不会起作用。它不起作用的事实应该足以让您尝试。您的实际设备通过互联网连接,无法通过127.0.0.1
地址连接到您的计算机
在你的mac终端窗口中输入ifconfig
,你会看到多个网络接口。您将有一个127.0.0.1
可能称为lo0
,并且可能会有其他类似en0
的IP 地址将有另一个IP 地址,如192.168.0.3
。试试192地址
和往常一样,删除数据任务中的options
参数。 .mutableContainers
在 Swift 中毫无意义。 URLRequest
也是多余的。只需将 URL 传递给数据任务。 GET 请求是默认的。
【参考方案1】:
您正在使用无法通过物理设备或模拟器工作的本地环回 IP 地址。
在您的 mac 终端窗口中键入 ifconfig
,您将看到多个网络接口。您将拥有一个 127.0.0.1
可能称为 lo0
并且可能会有像 en0
这样的其他 IP 地址,例如 192.168.0.3
。
您将需要使用本地192.
地址连接到同一网络上的本地计算机。
【讨论】:
以上是关于使用 URLSession 将数据获取到 PHP 方法 - swift的主要内容,如果未能解决你的问题,请参考以下文章
使用 URLSession 和 ViewModel 检索数据
由于“错误:‘URLSession’类型的值没有成员‘数据’”,将 Vapor 应用程序部署到 Heroku 失败
如何使用 Swift URLSession 通过 REST api 将图像和其他参数作为表单数据发布?
使用 URLSession 和 Codable 解析 JSON 数据