2015-10-22 15 views
6

Sto lavorando con Unity WWW per alcune richieste API Rest. Ma non supporta lo stato di risposta (restituisce solo testo ed errore). Qualche soluzione per questo? Grazie!Ottieni unity codice di stato di risposta WWW

+4

di riferimento futuro: Se si ottiene un reindirizzamento 301 seguito da un messaggio di errore, intestazioni di risposta di Unity conterranno il 301, non è l'errore. :( –

risposta

12

modifica: Dal momento in cui ho posto questa domanda, Unity ha rilasciato un nuovo framework per le comunicazioni HTTP denominato UnityWebRequest. È molto più moderno del WWW e fornisce un accesso definitivo al codice di risposta, oltre a una maggiore flessibilità intorno a intestazioni, verbi HTTP, ecc. Probabilmente dovresti usarlo al posto del WWW.


a quanto pare è necessario analizzarlo dalle intestazioni di risposta da soli.

questo sembra fare il trucco:

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; 
} 
Problemi correlati