2015-10-22 2 views
6

Я работаю с Unity WWW для некоторого запроса API для отдыха. Но он не поддерживает получение статуса ответа (только возвращаемый текст и ошибка). Любое решение для этого? Благодаря!Получить код статуса ответа Unity WWW

+4

Для дальнейшего использования: Если вы получаете 301 редирект с последующим сообщением об ошибке, заголовки ответа Unity будет содержать 301, а не ошибка. :( –

ответ

12

Редактировать: С тех пор, как я задал этот вопрос, Unity выпустила новую инфраструктуру для HTTP-соединений под названием UnityWebRequest. Он намного более современный, чем 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; 
} 
Смежные вопросы