LoginSignup
0
2

More than 3 years have passed since last update.

[iOS][HTTPStatusCode]インターネットへ接続 例

Last updated at Posted at 2017-02-24

インターネットへ接続

HTTPステータスコード

サーバーからブラウザに返してくるコードのことをステータスコードといいますが、これには

  • 100番台 案内(インフォメーション)
  • 200番台 正常処理
  • 300番台 移転通知
  • 400番台 (クライアントにおける)処理失敗
  • 500番台 サーバーエラー

があり、400番台と500番台がいわゆるエラーコードとなります。
正常処理である200番台は通常ブラウザに表示されることはありませんので、ここでは300番台~500番台までの主なステータスコードについてのみ取り上げます。


300番台

300 Multiple Choices 複数ページの利用が可能です。
301 Moved Parmanently このアドレスは違うアドレスに移動しました。
302 Moved Temporarily このアドレスは一時的に別のアドレスにおいています。
303 See Other 他のページを参照してください。
304 Not Modified アクセスは許可されたが、対象の文書は更新されていなかった。
305 Use Proxy LocationフィールドのProxy経由でないとアクセス許可されません。
307 Temporary Redirect このアドレスは一時的に別のアドレスに属しています。


400番台

400 Bad Request タイプミス等、リクエストにエラーがあります。
401 Unauthorixed 認証に失敗しました。(パスワードを適当に入れてみた時などに発生)
402 Payment Required (将来の使用のための予約コード)
403 Forbidden あなたにはアクセス権がありません。
404 (File)Not Found 該当アドレスのページはありません、またはそのサーバーが落ちている。
405 Method Not Allowed 許可されていないメソッドタイプのリクエストを受けた。
406 Not Acceptable Acceptヘッダから判断された結果、受け入れられない内容を持っていた。
407 Proxy Authentication Required 最初にProxy認証が必要です。
408 Request Time-out リクエストの待ち時間内に反応がなかった。
409 Conflict そのリクエストは現在の状態のリソースと矛盾するため完了できなかった。
410 Gone そのリクエストはサーバでは利用できず転送先のアドレスも分からない。
411 Length Required 定義されたContent-Lengthの無いリクエストを拒否しました。
412 Precondition Failed 1つ以上のリクエストヘッダフィールドで与えられた条件がサーバ上のテストで不正であると判断しました。
413 Request Entity Too Large 処理可能量より大きいリクエストのため拒否しました。
414 Request-URI Too Large リクエストURIが長すぎるため拒否しました。
415 Unsupported Media Type リクエストされたメソッドに対してリクエストされたリソースがサポートしていないフォーマットであるため、サーバはリクエストのサービスを拒否しました。
416 Requested range not satisfiable リクエストにRangeヘッダフィールドは含まれていたが、If-Rangeリクエストヘッダフィールドがありません。
417 Expectation Failed Expectリクエストヘッダフィールド拡張が受け入れられなかった。


500番台

500 Internal Server Error CGIスクリプトなどでエラーが出た。
501 Not Implemented リクエストを実行するための必要な機能をサポートしていない。
502 Bad Gateway ゲートウェイやProxyとして動作しているサーバがリクエストを実行しようとしたら不正なレスポンスを受け取った。
503 Service Unavailable そのアドレスは事情によりアクセスできません。
503.1 Mapping Server Error クリッカブルマップで、変なアドレスを指定した。
503.2 Too many users この時間このページにアクセスできる定員オーバーをしました。
503.3 Method Not Allowed CGIで送信時にPOSTかGETの一方しかできないのに、違う方を行った。
504 Gateway Time-out リクエストを完了するために必要なDNSなどのサーバからレスポンスを受信できなかった。
505 HTTP Version not supported サポートされていないHTTPプロトコルバージョンを受けた。

HTTPStatusCode[iOS]で表示したい時に使う

使いどころは、ネットワークがらみの時ですかね。

+ (NSDictionary *)HTTPStatusCodeInfo
{
   return @{
       // 300番台
       @"300":@{
          @"title":@"Multiple Choices",
          @"discription":@"複数ページの利用が可能です",
       },
       @"301":@{
          @"title":@"Moved Parmanently",
          @"discription":@"このアドレスは違うアドレスに移動しました",
       },
       @"302":@{
          @"title":@"Moved Temporarily",
          @"discription":@"このアドレスは一時的に別のアドレスにおいています",
       },
       @"303":@{
          @"title":@"See Other",
          @"discription":@"他のページを参照してください",
       },
       @"304":@{
          @"title":@"Not Modified",
          @"discription":@"アクセスは許可されたが、対象の文書は更新されていなかった",
       },
       @"305":@{
          @"title":@"Use Proxy",
          @"discription":@"LocationフィールドのProxy経由でないとアクセス許可されません",
       },
       @"307":@{
          @"title":@"Temporary Redirect",
          @"discription":@"このアドレスは一時的に別のアドレスに属しています",
       },
       ///400番台
       @"400":@{
          @"title":@"Bad Request",
          @"discription":@"タイプミス等、リクエストにエラーがあります",
       },
       @"401":@{
          @"title":@"Unauthorixed",
          @"discription":@"認証に失敗しました。(パスワードを適当に入れてみた時などに発生)",
       },
       @"402":@{
          @"title":@"Payment Required",
          @"discription":@"(将来の使用のための予約コード)",
       },
       @"403":@{
          @"title":@"Forbidden",
          @"discription":@"あなたにはアクセス権がありません",
       },
       @"404":@{
          @"title":@"(File)Not Found",
          @"discription":@"該当アドレスのページはありません、またはそのサーバーが落ちている",
       },
       @"405":@{
          @"title":@"Method Not Allowed",
          @"discription":@"許可されていないメソッドタイプのリクエストを受けた",
       },
       @"406":@{
          @"title":@"Not Acceptable",
          @"discription":@"Acceptヘッダから判断された結果、受け入れられない内容を持っていた",
       },
       @"407":@{
          @"title":@"Proxy Authentication Required",
          @"discription":@"最初にProxy認証が必要です",
       },
       @"408":@{
          @"title":@"Request Time-out",
          @"discription":@"リクエストの待ち時間内に反応がなかった",
       },
       @"409":@{
          @"title":@"Conflict",
          @"discription":@"そのリクエストは現在の状態のリソースと矛盾するため完了できなかった",
       },
       @"410":@{
          @"title":@"Gone",
          @"discription":@"そのリクエストはサーバでは利用できず転送先のアドレスも分からない",
       },
       @"411":@{
          @"title":@"Length Required",
          @"discription":@"定義されたContent-Lengthの無いリクエストを拒否しました",
       },
       @"412":@{
          @"title":@"Precondition Failed",
          @"discription":@"1つ以上のリクエストヘッダフィールドで与えられた条件がサーバ上のテストで不正であると判断しました",
       },
       @"413":@{
          @"title":@"Request Entity Too Large",
          @"discription":@"処理可能量より大きいリクエストのため拒否しました",
       },
       @"414":@{
          @"title":@"Request-URI Too Large",
          @"discription":@"リクエストURIが長すぎるため拒否しました",
       },
       @"415":@{
          @"title":@"Unsupported Media Type",
          @"discription":@"リクエストされたメソッドに対してリクエストされたリソースがサポートしていないフォーマットであるため、サーバはリクエストのサービスを拒否しました",
       },
       @"416":@{
          @"title":@"Requested range not satisfiable",
          @"discription":@"リクエストにRangeヘッダフィールドは含まれていたが、If-Rangeリクエストヘッダフィールドがありません",
       },
       @"417":@{
          @"title":@"Expectation Failed",
          @"discription":@"Expectリクエストヘッダフィールド拡張が受け入れられなかった",
       },
       // 500番台
       @"500":@{
          @"title":@"Internal Server Error",
          @"discription":@"CGIスクリプトなどでエラーが出た",
       },
       @"501":@{
          @"title":@"Not Implemented",
          @"discription":@"リクエストを実行するための必要な機能をサポートしていない",
       },
       @"502":@{
          @"title":@"Bad Gateway",
          @"discription":@"ゲートウェイやProxyとして動作しているサーバがリクエストを実行しようとしたら不正なレスポンスを受け取った",
       },
       @"503":@{
          @"title":@"Service Unavailable",
          @"discription":@"そのアドレスは事情によりアクセスできません",
       },
       @"503.1":@{
          @"title":@"Mapping Server Error",
          @"discription":@"クリッカブルマップで、変なアドレスを指定した",
       },
       @"503.2":@{
          @"title":@"Too many users",
          @"discription":@"この時間このページにアクセスできる定員オーバーをしました",
       },
       @"503.3":@{
          @"title":@"Method Not Allowed",
          @"discription":@"CGIで送信時にPOSTかGETの一方しかできないのに、違う方を行った",
       },
       @"504":@{
          @"title":@"Gateway Time-out",
          @"discription":@"リクエストを完了するために必要なDNSなどのサーバからレスポンスを受信できなかった",
       },
       @"505":@{
          @"title":@"HTTP Version not supported",
          @"discription":@"サポートされていないHTTPプロトコルバージョンを受けた",
       },
   }
}

+ (NSString *)HTTPStatusCodeDiscription:(NSInteger)HTTPStatusCode
{ 
  NSString *key = [NSString stringWithFormat:@"%d",(int)HTTPStatusCode];
  return [self HTTPStatusCodeInfo][key][@"discription"];
} 

補足

@interface //クラス ()

@property (nonatomic, retain) NSMutableData *receivedData;
@property (nonatomic, retain) NSDictionary *responseDict;

@end

@implementation //クラス

///
- (void)HTTPURLResponse {
    NSString *httpString = @"https://graph.facebook.com/?id=http://sunstripe.main.jp";
    NSError *error = nil;
    NSURLResponse *response = nil;
    self.receivedData = [[NSMutableData alloc] init];
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
    [request setURL:[NSURL URLWithString:httpString]];
    [request setHTTPMethod:@"GET"];
    NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
    if(data){
        _responseDict = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
    }

    NSHTTPURLResponse *HTTPURLResponse = nil;
    HTTPURLResponse = (NSHTTPURLResponse *)response;
    NSLog(@"HTTPURLResponse.statusCode : %d",(int)HTTPURLResponse.statusCode);

}
HTTPURLResponse.log

HTTPURLResponse.statusCode : 200

関連記事

About - サンストライプ


制作チーム:サンストライプ

http://sunstripe.main.jp/sunstripe/
(月1WEBコンテンツをリリースして便利な世の中を作っていくぞ!!ボランティアプログラマー/デザイナー/イラストレーター/その他クリエイター声優募集中!!)

地域情報 THEメディア

THE メディア 地域活性化をテーマに様々なリリース情報も含め、記事をお届けしてます!!
https://the.themedia.jp/

ゼロからはじめる演劇ワークショップ

多様化の時代に向けて他者理解を鍛える

プログラミングワークショップ・ウェブ塾の開講!!!

様々なテーマでプログラミングに囚われずに取り組んでいきます。
詳しくはこちら ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
プログラミングサロン 月1だけのプログラミング学習塾

協力応援 / 支援者の集い

チーム:サンストライプ

プログラミングラボ

一緒にポートフォリオを作りませんか?現場の体験やそれぞれの立場から年齢関係なく作品を作りたい方々と一緒にチームを作って、作品を作っています。現場に行きたい人には、職場紹介や職場の体験や悩み相談なども受けております。
様々な職種からプログラミングの知識を得たい、デザインの知識を得たい、データーベースの知識を得たいという人が集まっております。
週1のミーティングにそれぞれの近況と作業報告して、たまにリモート飲み会などをしております!!

興味がある方は、DMに話しかけてみてください。

0
2
6

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2