iOSでは、Webサーバーからの応答のhttpステータスコード(404、500、200など)をどのように受信できますか。 NSUrlConnectionDelegateにあると仮定しています。
Objective-CまたはMonotouch .NET answer ok。
はい、デリゲートメソッド-didRecieveResponseでステータスコードを取得できます。
- (void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
NSHTTPURLResponse* httpResponse = (NSHTTPURLResponse*)response;
int code = [httpResponse statusCode];
}
NSHTTPURLResponse* urlResponse = nil;
NSError *error = nil;
responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&error];
ASynchronousリクエストには、NSHTTPURLResponseを取得する方法も必要です。
次のようなステータスコードを取得します。
int statusCode = [urlResponse statusCode];
int errorCode = error.code;
使用頻度の高いエラーコード(404など)の場合、エラーになりますが、別のコード(401は-1012)になります。
これらのC#ユーザー向けにMonoTouch for .NETでそれを行う方法を次に示します。これはNSUrlConnectionDelegateにあります。
public override void ReceivedResponse (NSUrlConnection connection, NSUrlResponse response)
{
if (response is NSHttpUrlResponse)
{
var r = response as NSHttpUrlResponse;
Console.WriteLine (r.StatusCode);
}
}
この他のstackoverflowの質問 を見ると、- (void)connection:(NSURLConnection *)aConnection didReceiveResponse:(NSURLResponse *)response
デリゲートメソッドでhttpステータスコードを処理できるようです:
- (void)connection:(NSURLConnection *)aConnection didReceiveResponse:(NSURLResponse*)response
{
if ([response isKindOfClass: [NSHTTPURLResponse class]])
statusCode = [(NSHTTPURLResponse*) response statusCode];
}