我正在使用NSUrlSessionTaskDelegate将文件上传到服务器,但是didCompleteWithError中没有给出服务器代码。这与苹果文档相符:
不通过error参数报告服务器错误。唯一的 您的委托通过错误参数收到的错误 客户端错误,例如无法解析主机名或 连接到主机。
但是有没有其他方法可以让服务器错误像400 Bad Request或者什么?因为即使我收到错误的请求,每个文件上传都是成功的。
答案 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)
}
}