2011-04-22 86 views
58

有沒有人知道在iOS SDK中定義了HTTP狀態碼as specified here?或者我應該期望在常量文件中手動重新定義它們?iOS SDK中的任何位置是否定義了HTTP狀態碼?

+1

我做了一個grep的-r '404' *在/傑韋利oper/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/System/Library/Frameworks /並且空手而來,所以答案几乎肯定是「不」。 – Kalle 2011-06-21 11:20:04

+1

@Kalle你應該發表你的評論作爲答案,它似乎是一個明確的我。 – benzado 2011-06-22 16:53:39

+0

完成。 :)(最小注釋長度填充) – Kalle 2011-06-22 17:53:53

回答

23

/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/System/Lib‌​rary/Frameworks/ 

做了

grep -r '404' * 

又上來空手所以答案几乎肯定是 「不」。

+1

或者,也許代碼被定義爲相對值的枚舉,如kHTTPErrorBadRequestCodes = 400和kHTTPErrorNotFound = kHTTPErrorBadRequestCodes + 4 ...所以你不能確定... – AliSoftware 2011-06-22 18:39:44

+3

我可以有信心地說,這將是非常荒謬的,所以我懷疑它。 – Kalle 2011-06-22 19:11:46

+0

我同意,我也對此表示懷疑;)但是我們仍然保持希望^^ – AliSoftware 2011-06-22 20:37:53

24

那麼,他們在這個意義上定義的

[NSHTTPURLResponse localizedStringForStatusCode:(NSInteger)statusCode] 

可以返回給定的狀態碼的字符串。那是你在找什麼?

+5

不完全 - 我使用HTTP狀態代碼來控制應用程序邏輯 - 例如,402會觸發AlertView告訴用戶他應該進行應用內購買才能繼續。我有#defined HTTP_PAYMENT_REQUIRED 402,但我覺得應該已經在API中的某個位置出現了,就像它在Android中一樣。 – esilver 2011-04-22 19:37:09

1

http狀態碼可以由服務器響應來定義。當有連接時,可以使用NSURLResponse讀出statusCode。 那些4 **響應可以在您的服務器上進行內部定義。

+0

我認爲JocelynH已經說得對:根據w3.org [link](http://www.w3.org/Protocols/rfc2616/) RFC2616-SEC10。在OP中,「除了響應HEAD請求之外,服務器應該包含一個實體,其中包含對錯誤情況的解釋......」我的猜測是,無論出於何種原因,Apple都選擇退出枚舉遊戲對於400範圍的錯誤,因爲它們應該是服務依賴的。 (不是我必然同意這個推理。) – clozach 2011-08-25 18:27:29

2

我也找不到一個我期望存在的頭文件,所以我不得不寫一個我自己的頭文件。

使用GitHub中的nv-ios-http-status項目中包含的HTTPStatusCodes.h,基於HTTP狀態代碼的分派可以寫成如下形式。

#import "HTTPStatusCodes.h" 

...... 

- (void)connection:(NSURLConnection *)connection 
    didReceiveResponse:(NSURLResponse *)response 
{ 
    NSHTTPURLResponse *res = (NSHTTPURLResponse *)response; 

    switch ([res statusCode]) 
    { 
     // 200 OK 
     case kHTTPStatusCodeOK: 
      ......; 
    } 

    ...... 
} 

我希望HTTPStatusCodes.h可以節省你和其他開發人員的時間。