NSUrlConnectionDelegate - 获取http状态代码

Ian*_*ink 34 iphone xamarin.ios http-response-codes ios nsurlconnectiondelegate

在iOS中,如何从Web服务器接收响应的http状态代码(404,500 200等).我假设它在NSUrlConnectionDelegate中.

Objective-C或Monotouch .NET回答好.

Vla*_*mir 87

是的,您可以在委托方法-didRecieveResponse中获取状态代码:

- (void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
   NSHTTPURLResponse* httpResponse = (NSHTTPURLResponse*)response;
   int code = [httpResponse statusCode];
}
Run Code Online (Sandbox Code Playgroud)

  • 请注意,尽管使用了点符号,但statusCode不是属性. (2认同)
  • @albertamg,oops确实...谢谢,将纠正这一点以避免混淆 (2认同)
  • 我意识到这很明显,但我会注意到它只是为了完整性:在任何其他地方你得到一个`NSURLResponse`来响应HTTP请求(例如`sendAsynchronousRequest:queue:completionHandler:`的完成处理程序,你可以用完全相同的方式将`NSURLResponse`强制转换为`NSHTTPURLResponse`. (2认同)

Man*_*uel 11

NSHTTPURLResponse* urlResponse = nil;
NSError *error = nil;
responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&error];
Run Code Online (Sandbox Code Playgroud)

aSynchronous请求也应该有办法获取NSHTTPURLResponse ..

你得到这样的状态代码:

int statusCode = [urlResponse statusCode];
int errorCode = error.code;
Run Code Online (Sandbox Code Playgroud)

在一些使用过多的错误代码(如404)的情况下,它将被置于错误中,但使用不同的代码(401将为-1012).