unitywebrequest unity retrieving from form data body c# android unity3d request httprequest

c# - retrieving - unitywebrequest post



Unity-WWW.text devuelve null en un dispositivo Android (1)

Ejecuté una prueba rápida con su código modificado que todavía no funciona y recibí esta excepción en tiempo de ejecución:

java.net.MalformedURLException: Protocolo no encontrado

Siempre es bueno usar el Monitor de Android cuando tenga problemas como este.

El problema es que no has prefijado la URL con http:// o https:// . Android no es compatible con eso, por eso funcionó en el Editor, pero no en Android.

Lo mismo ocurre cuando intenta insertar el nombre de usuario y la contraseña en una url. Por ejemplo, http: // username: [email protected] .

Esto funcionará en Windows y el Editor, pero no funcionará en Android, pero hay una solución para ello.

Esto debería funcionar:

IEnumerator testConnection() { Dictionary<string, string> header = new Dictionary<string, string>(); string userAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"; header.Add("User-Agent", userAgent); WWW www = new WWW("http://www.google.com", null, header); yield return www; // check for errors if (www.error == null) { util.debug("works"); } else { // www.error and www.text both are empty util.debug("testing: WWW Error: " + www.error + www.text); } }

Sugerencia :

Al realizar una solicitud web desde la aplicación Unity a un servidor que no le pertenece ( http://www.google.com ), siempre es una buena idea agregar un encabezado de agente de usuario o esperar que la solicitud falle en algunos dispositivos. cuando se lanza tu aplicación.

Estoy desarrollando una aplicación de Android con Unity. Pero no puedo conectarme a un servidor de internet con eso. Esto da falso, lo cual es bueno: Application.internetReachability == NetworkReachability.NotReachable

Pero cuando intentas ejecutar este fragmento:

IEnumerator testConnection() { Dictionary<string, string> header = new Dictionary<string, string>(); string userAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"; header.Add("User-Agent", userAgent); WWW www = new WWW("www.google.com", null, header); yield return www; // check for errors if (www.error == null) { util.debug("works"); } else { // www.error and www.text both are empty util.debug("testing: WWW Error: " + www.error + www.text); } }

funciona a través del editor de unidades y el ejecutable de Windows, pero no en mi dispositivo Android (v 6) ¿Hay alguna solución conocida para esto?

Ping también parece funcionar:

IEnumerator PingGoogle() { Ping googPing = new Ping("172.217.6.195"); while (!googPing.isDone) { yield return googPing; } util.debug("ping works: " + googPing.time); //I reach this point with the app }

¿Entonces creo que algo está mal con la clase WWW ?

Versión de Android: 6.0.1

Versión de OxygenOS: 3.5.6

Versión de la unidad: 5.6.0b3 Personal (64 bits)

Editar: Cambié el PlayerSettings (que es el manifiesto de Android por lo que puedo decir) de Internet Access de Auto para Require . Sin éxito

Edit2: Parece que www.error no estaba vacío en absoluto. El mensaje se truncó porque era demasiado largo para unitys-textelement (mi culpa). El error fue java.net.MalformedURLException: Protocol not found: www.google.de . Entonces, lo único que faltaba era el protocolo, es decir: http:// . Encontré este problema cuando probé una solución sugerida a partir de los comentarios.