2015-10-22 58 views
6

我正在使用Unity WWW獲取一些Rest API請求。但它不支持獲得響應狀態(只返回文本和錯誤)。任何解決方案?謝謝!獲取Unity的WWW響應狀態代碼

+4

以供將來參考:如果你得到一個301重定向緊隨其後的錯誤消息,Unity的響應頭將包含301,而不是錯誤。 :( –

回答

12

編輯:自從我問這個問題以來,Unity發佈了一個名爲UnityWebRequest的HTTP通信新框架。它比WWW更現代化,並且提供了對響應代碼的明確訪問,以及關於標題,HTTP動詞等的更多靈活性。您應該可以使用它來代替WWW。


顯然你需要自己從響應頭中解析它。

這似乎這樣的伎倆:

public static int getResponseCode(WWW request) { 
    int ret = 0; 
    if (request.responseHeaders == null) { 
    Debug.LogError("no response headers."); 
    } 
    else { 
    if (!request.responseHeaders.ContainsKey("STATUS")) { 
     Debug.LogError("response headers has no STATUS."); 
    } 
    else { 
     ret = parseResponseCode(request.responseHeaders["STATUS"]); 
    } 
    } 

    return ret; 
} 

public static int parseResponseCode(string statusLine) { 
    int ret = 0; 

    string[] components = statusLine.Split(' '); 
    if (components.Length < 3) { 
    Debug.LogError("invalid response status: " + statusLine); 
    } 
    else { 
    if (!int.TryParse(components[1], out ret)) { 
     Debug.LogError("invalid response code: " + components[1]); 
    } 
    } 

    return ret; 
}