http.post a Rest con DataSnap
Publicado por Elvin Landeta (1 intervención) el 02/10/2015 21:31:08
Buenas a todos
Estoy tratando de enviar un objeto json a un servicio rest con datasnap, he buscado por internet y lo unico que encuentro es que hay que habilitar CROSS DOMAIN con los siguientes comandos:
Response.SetCustomHeader('Access-Control-Allow-Origin','*');
Response.SetCustomHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
Response.SetCustomHeader('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept, Authorization');
Con esto logre hacer el Get sin ningun inconveniente
Este es mi metodo Post definido en DataSnap
function TServerMethods.EjemploPost(value: TJSONObject = nil): TJSONObject;
begin
Result:= TJSONObject.Create;
Result.AddPair('mensaje', 'objeto Json Recibido de Forma Satisfactoria...');
//TJSONObject.
end;
Podran notar es un metodo sencillo solo simula la recepcion del objeto json y deberia retornarme en otro json el mensaje.
Este es el codigo usado en JavaScript(AngularJS para ser Especifico)
EjemploPost: function(data) {
data = JSON.stringify(data);
return $http.post("http://localhost:8080/datasnap/rest/TServerMethods/EjemploPost", data);
//return $http(req);
}
El Mensaje de error es el Siguiente:
Failed to load resource: the server responded with a status of 500 (Internal Server Error)
(index):1 XMLHttpRequest cannot load http://localhost:8080/datasnap/rest/TServerMethods/EjemploPost. Response for preflight has invalid HTTP status code 500
CommonRepository.js:45 Ejecutar Post
Aclaro, el servidor rest datasnap esta en el puerto 8080 y la aplicacion web Cliente corre sobre Bitnami en el puerto 8081.
Por Favor alguien que me pueda ayudar llevo ya par de semana tratando con este error.
Estoy tratando de enviar un objeto json a un servicio rest con datasnap, he buscado por internet y lo unico que encuentro es que hay que habilitar CROSS DOMAIN con los siguientes comandos:
Response.SetCustomHeader('Access-Control-Allow-Origin','*');
Response.SetCustomHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
Response.SetCustomHeader('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept, Authorization');
Con esto logre hacer el Get sin ningun inconveniente
Este es mi metodo Post definido en DataSnap
function TServerMethods.EjemploPost(value: TJSONObject = nil): TJSONObject;
begin
Result:= TJSONObject.Create;
Result.AddPair('mensaje', 'objeto Json Recibido de Forma Satisfactoria...');
//TJSONObject.
end;
Podran notar es un metodo sencillo solo simula la recepcion del objeto json y deberia retornarme en otro json el mensaje.
Este es el codigo usado en JavaScript(AngularJS para ser Especifico)
EjemploPost: function(data) {
data = JSON.stringify(data);
return $http.post("http://localhost:8080/datasnap/rest/TServerMethods/EjemploPost", data);
//return $http(req);
}
El Mensaje de error es el Siguiente:
Failed to load resource: the server responded with a status of 500 (Internal Server Error)
(index):1 XMLHttpRequest cannot load http://localhost:8080/datasnap/rest/TServerMethods/EjemploPost. Response for preflight has invalid HTTP status code 500
CommonRepository.js:45 Ejecutar Post
Aclaro, el servidor rest datasnap esta en el puerto 8080 y la aplicacion web Cliente corre sobre Bitnami en el puerto 8081.
Por Favor alguien que me pueda ayudar llevo ya par de semana tratando con este error.
Valora esta pregunta


0