gpt4 book ai didi

ios - 在 http 请求中使用 GET 方法时的错误域

转载 作者:行者123 更新时间:2023-11-28 12:12:40 26 4
gpt4 key购买 nike

我是编程新手,现在我正在学习使用 PHP 作为后端服务器构建 iOS 应用。

据我所知,在http方法中,如果我使用GET方法,就等于在浏览器中写一个查询。

假设我想发送“id”作为查询项以从服务器获取 JSON 响应,我可以在浏览器中这样写

http://website.com/post.php?id=23

我使用 PHP 构建我的后端,为了捕获该 ID,我在服务器端代码中使用了 $_REQUEST(据我所知,_REQUEST 可以接受 GET 和 POST 方法)。

当我使用浏览器访问该路径时,我可以从服务器获取 JSON 数据响应。

但是,当我尝试使用 GET 方法从我的 iOS 应用程序发送该查询时,出现错误

Error : Error Domain=NSCocoaErrorDomain Code=3840 "No value." UserInfo={NSDebugDescription=No value.}

但是当我将该 http 方法更改为 POST 时,它可以无缝运行。这是我想在我的 iOS 应用程序中发送请求时激活的方法。我只想获取数据,而不是在数据库中创建新数据。

func loadPost() {
let id = userInfo!["id"] as! String

let url = URL(string: "http://localhost/Twitter/post.php")

var request = URLRequest(url: url!)
request.httpMethod = "GET" <--- if i change this to POST, it is worked

let body = "id=\(id)"
request.httpBody = body.data(using: .utf8)

let session = URLSession.shared
let task = session.dataTask(with: request, completionHandler: { (data, response, error) in
if error == nil {
DispatchQueue.main.async {
self.activityIndicator.startAnimating()
do {
let json = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as? NSDictionary
guard let parsedJSON = json else {
print ("error while parsing JSON")
return
}
print(parsedJSON)
} catch {
print ("Error : \(error)")
}
}
} else {
print ("Error : \(error!)")
}
})
task.resume()
}

这里出了什么问题?为什么它只在我使用 POST 方法而不是 GET 方法时有效?

最佳答案

您正在通过请求正文发送数据。默认情况下,GET 将参数作为查询字符串参数,而 POST 将通过正文接收参数

https://secure.php.net/manual/it/function.http-get-request-body.php

关于ios - 在 http 请求中使用 GET 方法时的错误域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47923417/

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