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.