windows-phone-8 unity3d windows-rt

windows phone 8 - WWW.responseHeader["ESTADO"] no existe



windows-phone-8 unity3d (2)

Ya le pregunté en answers.unity3d pero como no hay respuesta, preguntaría por SO también ...

No puedo recuperar el estado http de una respuesta en el objeto WWW en Windows Phone 8 y Windows RT 8.1 (mientras está bien en IOS / Android).

www.responseHeader["STATUS"] no existe y el campo oculto _responseHeaderString no contiene como primera línea

HTTP / 1.1 200 OK

responseHeaderString :

Server: nginx Date: Wed, 21 Oct 2015 07:44:36 GMT Last-Modified: Mon, 07 Sep 2015 11:43:46 GMT Connection: keep-alive Expires: Fri, 20 Nov 2015 07:44:36 GMT Cache-Control: max-age=2592000 Cache-Control: public

responseHeader :

{ "SERVER" : "nginx" "DATE" : "Wed, 21 Oct 2015 07:44:36 GMT" "LAST-MODIFIED": "Mon, 07 Sep 2015 11:43:46 GMT" "CONNECTION" : "keep-alive" "EXPIRES" : "Fri, 20 Nov 2015 07:44:36 GMT" "CACHE-CONTROL": "public" }

Código de muestra para reproducir : (probado en un nuevo proyecto vacío)

WWW www = new WWW("http://www.google.com"); yield return www; Debug.Log("Google Status : " + www.responseHeaders.ContainsKey("STATUS")); // False Debug.Log(www.text); // <doctype ... Debug.Log(www.responseHeaders["STATUS"]); // KeyError

¿Me estoy perdiendo algo o hay alguien que pueda confirmar esto como un error?

Editar: Todavía no se puede recuperar el estado de http con el último 5.3


Su servidor de red probablemente responda con una respuesta diferente (inesperada) a cada dispositivo. Por varias razones, como la cadena de agente de usuario, que podría llevar a la clase WWW a no obtener el estado.

En primer lugar, instalaría un proxy para que pueda ver exactamente qué envía el teléfono y cuál es la respuesta sin procesar del servidor. O bien Charles Proxy (mac / windows) o Fiddler (windows) son geniales.

Aquí está el código real que la clase Unity WWW está usando para generar el estado:

if (num++ == 0 && text.StartsWith("HTTP")) { dictionary["STATUS"] = text; }

Ref: https://github.com/MattRix/UnityDecompiled/blob/master/UnityEngine/UnityEngine/WWW.cs#L483

Del proxy debe quedar claro lo que está sucediendo. De lo contrario, publique aquí la solicitud y la respuesta (sin procesar).


Intente leer el www.error antes de buscar el encabezado ESTADO.

// Construct the response object string error = www.error; if (error == null) { if (www.responseHeaders.ContainsKey("STATUS")) { string [] status=www.responseHeaders["STATUS"].Split('' ''); if (status.Length>2 && status[2] != "OK") { error = www.responseHeaders["STATUS"]; } } }