NSUrlSessionTaskDelegate服务器响应

时间:2015-12-04 11:21:07

标签: objective-c swift

我正在使用NSUrlSessionTaskDelegate将文件上传到服务器,但是didCompleteWithError中没有给出服务器代码。这与苹果文档相符:

  

不通过error参数报告服务器错误。唯一的   您的委托通过错误参数收到的错误   客户端错误,例如无法解析主机名或   连接到主机。

但是有没有其他方法可以让服务器错误像400 Bad Request或者什么?因为即使我收到错误的请求,每个文件上传都是成功的。

2 个答案:

答案 0 :(得分:2)

这样的事情应该有效。但我没有测试它。它只是因为更简单的代码格式化而作为答案发布...

- (void)URLSession:(NSURLSession *)session
              task:(NSURLSessionTask *)task
didCompleteWithError:(NSError *)error
{
    if (!error)
    {
        NSHTTPURLResponse *response = task.response;

        NSLog(@"StatusCode: %d",response.statusCode);

        if (response.statusCode != 200) //note that other 2xx codes might be valid
        {
            //....
        }
    }
    else
    {
        NSLog(@"Error: %@",error.description);
    }
}

答案 1 :(得分:0)

SWIFT 5 中,您可以执行如下操作。

func urlSession(_ session: URLSession, task: URLSessionTask, didCompleteWithError error: Error?) {
            
     print(task.response ?? "")
            
     if let urlResponse = task.response as? HTTPURLResponse {
         print(urlResponse.statusCode)
     }
}