NSUrlConnectionDelegate - Getting http status codes

◇◆丶佛笑我妖孽 提交于 2019-11-28 21:06:23

Yes, you can get status code in delegate method -didRecieveResponse:

- (void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
   NSHTTPURLResponse* httpResponse = (NSHTTPURLResponse*)response;
   int code = [httpResponse statusCode];
}
Manuel
NSHTTPURLResponse* urlResponse = nil;
NSError *error = nil;
responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&error];

The aSynchronous request should also have a way to get the NSHTTPURLResponse..

You get the status code like this:

int statusCode = [urlResponse statusCode];
int errorCode = error.code;

In the case of some much used error codes (like 404) it will get put in the error but with a different code (401 will be -1012).

Here's how to do it in MonoTouch for .NET for those C# users. THis is in the NSUrlConnectionDelegate.

public override void ReceivedResponse (NSUrlConnection connection, NSUrlResponse response)
{
  if (response is NSHttpUrlResponse)
  {
    var r = response as NSHttpUrlResponse;
    Console.WriteLine (r.StatusCode);
   }
}
Carter

Looking at this other stackoverflow question it looks like you can handle http status codes in the - (void)connection:(NSURLConnection *)aConnection didReceiveResponse:(NSURLResponse *)response delegate method:

- (void)connection:(NSURLConnection *)aConnection didReceiveResponse:(NSURLResponse*)response 
{
    if ([response isKindOfClass: [NSHTTPURLResponse class]])
        statusCode = [(NSHTTPURLResponse*) response statusCode];
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!