我想弄清楚为什么每次我将有效的 json 传递到我的服务器以获取 GET 请求时连接超时。除了 GET 之外,我在任何其他请求类型中将 json 传递到我的服务器没有任何问题...我已经在本地测试了服务器端代码并且查询按预期工作。
我想从我的数据库中获取一个特定的用户,我需要传入一个用户名,所以我将用户名发送到服务器。
我不断收到错误(如果我不向服务器发送任何参数,而只是返回 current_user,它会工作并且我不会收到此错误)
Domain=NSURLErrorDomain Code=-1001 "The request timed out." UserInfo={NSUnderlyingError=0x604000454c40 {Error Domain=kCFErrorDomainCFNetwork Code=-1001
这是 API 调用代码的一部分,我在其中设置了要发送到服务器的请求类型和值,以防:
let request = NSMutableURLRequest(url: url as URL)
request.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type")
request.httpBody = jsonData
request.httpMethod = "GET"
服务器设置,以防万一:
Digitalocean 液滴,Linux,Ubuntu 16.04,Nginx
编辑/更新
如果我将方法从 GET 更改为 POST(并保持服务器代码完全相同),服务器会立即发回正确的数据。
服务器端的代码非常短,所以我真的不明白它是如何因优化而超时的:
user = UserModel.find_by_username(data['username'])
if user:
return {"response": [user.json()]}, 200
return {"response": "user not found"}, 404
看起来真的好像我们不能通过 GET 方法发送 json。它似乎在模拟器和实际设备上都不起作用......我看到了一个类似的 SO 帖子,其中有人评论了我正在经历的事情。将 GET 更改为 POST 是解决方法....但它是一个 GET 请求,那么为什么这行不通呢?
最佳答案
GET-Method 不支持 http body。当您将参数作为 url 编码发送时,它将起作用。
示例:
http://www.example.de?username=abc
关于ios - API 请求仅在我传递参数时超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50892849/