我试图在iOS中发送一个简单的POST请求来测试我写的服务器。我的代码如下:
NSURL *url = [NSURL URLWithString:@"http://localhost:8888/createUser"];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
NSString *bodyData = @"username=johndoe";
request.HTTPMethod = @"POST";
request.HTTPBody = [bodyData dataUsingEncoding:NSUTF8StringEncoding];
request.timeoutInterval = 5;
[[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
NSLog(@"resp: %@, err: %@", response, error);
}];
我一直试图调试这个并且非常困惑。 completionHandler中的代码永远不会运行,请求永远不会超时,服务器永远不会看到任何内容。似乎什么都没发生。我能够使用旧的NSURLConnection
来执行请求,但是我希望避免使用它,因为它已被弃用。这里的问题是什么?
答案 0 :(得分:0)
除了设置代码以便在您说要进行POST时进行GET(正如josemando在评论中指出的那样),您还没有开始执行任务。
您需要像这样更改最后一行:
NSURLSessionDataTask *task = [[NSURLSession sharedSession]
dataTaskWithRequest: request
completionHandler: ^(NSData *data, NSURLResponse *response, NSError *error)
{
NSLog(@"resp: %@, err: %@", response, error);
}];
[task resume];
(dataTaskWithRequest创建并返回一个数据任务对象,然后您必须使用resume方法提交该对象以执行。)