我试图弄清楚为什么每次我将有效的json传递给我的服务器以获取GET请求连接超时。我没有任何问题将json传递给除GET之外的任何其他请求类型的服务器...我已经在本地测试了服务器端代码,并且查询按预期工作。
我想从我的数据库中获取特定用户,我需要传入用户名,因此我将用户名发送到服务器。
我一直在犯的错误(如果我没有向服务器发送任何参数,只返回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 Droplet,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请求,所以为什么这不起作用?
答案 0 :(得分:3)
GET-Method不支持http正文。当您将参数作为url编码发送时,它将起作用。
示例:
http://www.example.de?username=abc