2015-10-22 30 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; 
}