Estoy creando una aplicación PhoneGap para Android. Para obtener datos del servidor (remoto) realizo una llamada REST usando la función $ .ajax() de jQuery. Hay algunas cosas que usted debe saber:Las solicitudes de dominio cruzado con PhoneGap y jQuery no funcionan
- tipo de llamada debe ser post
- El servidor espera de datos JSON (al menos de nombre de usuario y contraseña)
- el servidor devuelve datos JSON
El código:
function makeCall(){
var url = "http://remote/server/rest/call";
var jsonData ='{"username":"'+$('#username').val()+'","password":"'+$('#password').val()+'"}';
$.ajax({
headers: {"Content-Type":"application/json; charset=UTF-8"},
type: "POST",
url: url,
data: jsonData,
dataType: "json",
success: succesFunction,
error: errorFunction
});
}
embargo, esto no funciona. Cuando uso Firebug para ver la respuesta de los servidores, no hay nada. Con TcpTrace puedo ver los encabezados de la solicitud. En lugar de un método POST esperado, hay un método OPTIONS, con algunos encabezados extraños agregados.
OPTIONS /remote/server/rest/call HTTP/1.1
Host: localhost:8081
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:11.0) Gecko/20100101 Firefox/11.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: nl,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
Origin: null
Access-Control-Request-Method: POST
Access-Control-Request-Headers: content-type
Pragma: no-cache
Cache-Control: no-cache
Sé que tiene algo que ver con hacer solicitudes entre dominios, pero no sé cómo resolver el problema. He intentado algunas cosas para solucionarlo, pero sin resultado:
- Uso 'jsonp' en lugar de 'json'
- intenta utilizar Cross-Origin Resource Sharing (CORS)
El problema también tiene algo que ver con la misma política de origen, pero esto no se aplica al archivo: // protocolo que PhoneGap está usando para cargar un archivo html local.
En mi archivo AndroidManifest.xml, la opción
<uses-permission android:name="android.permission.INTERNET" />
se establece.
Estoy tratando de solucionar esto durante 2 días, pero no se han obtenido resultados hasta ahora. ¿Es esto posible? ¿Tienes algún consejo para mí para seguir adelante?
¡Gracias de antemano!
su problema puede ser corregido, pero esta no es la respuesta que resuelve el problema de solicitud entre dominios – Asqan