elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  peticion http desde spring
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: peticion http desde spring  (Leído 4,270 veces)
ryhuso

Desconectado Desconectado

Mensajes: 25


Ver Perfil
peticion http desde spring
« en: 19 Abril 2021, 12:31 pm »

hola , no se si alguien me puede ayudar, quiero enviar una peticion http desde mi apirest para dar de alta un dispositivo en otro servicio.
Código:

@PostMapping("/dispositivos")
@ResponseStatus(code = HttpStatus.CREATED)
public  ResponseEntity<?> crear(@Valid @RequestBody Dispositivo dispositivo, BindingResult result) throws Exception {

Dispositivo dispositivonew = null;
Map<String, Object> response = new HashMap<>();
if (result.hasErrors()) {
List<String> errors = result.getFieldErrors().stream()
.map(err -> "El campo  '" + err.getField() + "' " + err.getDefaultMessage())
.collect(Collectors.toList());
response.put("errors", errors);
return new ResponseEntity<Map<String, Object>>(response, HttpStatus.BAD_REQUEST);
}

try {
peticionHttpPut(dispositivo);
dispositivonew = dispositivoService.save(dispositivo);
} catch (DataAccessException e) {
response.put("mensaje", "Error realizar al insertar en la base de datos!");
response.put("error", e.getMessage().concat(": ").concat(e.getMostSpecificCause().getMessage()));
return new ResponseEntity<Map<String, Object>>(response, HttpStatus.INTERNAL_SERVER_ERROR);

}


response.put("mensaje", "El Dispositivo ha sido creado con éxito!");
response.put("dispositivo", dispositivonew);
return new ResponseEntity<Map<String, Object>>(response, HttpStatus.CREATED);



}

public void peticionHttpPut(Dispositivo dispositivo) throws Exception {

URL url = new URL("https://hu3-gp9yw4dci7.azureiotcentral.com/api/preview/devices/"
+ dispositivo.getIdentificadorDispositivo());

HttpURLConnection conexion = (HttpURLConnection) url.openConnection();
conexion.setRequestMethod("PUT");
conexion.setDoOutput(true);
conexion.addRequestProperty("Authorization",
"SharedAccessSignature sr=a8b19977-9c37-4e01-bc86-f5990544bcb8&sig=gaSLKfM9MUo6Fsx9XVjY%3D&skn=admin&se=1650104456226");
conexion.setRequestProperty("Content-Type", "application/json");


String nombre = dispositivo.getNombre();
String instanceOf = "dtmi:modelDefinition:a2zj2t:b6dfy";

Map<String, Object> map = new HashMap<>();
map.put("displayName", nombre);
map.put("instanceOf", instanceOf);
map.put("simulated", false);
map.put("approved", true);
JSONObject json = new JSONObject(map);

String jsonInputString = json.toString();

try (OutputStream os = conexion.getOutputStream()) {
byte[] input = jsonInputString.getBytes("utf-8");
os.write(input, 0, input.length);

}


}



lo que quiero hacer es que cuando entre a mi solicitud de de alta en mi base de datos y también haga la petición put que tengo en el método, pero solo me inserta en la base de datos y no me hace lo otro.





En línea

rub'n


Desconectado Desconectado

Mensajes: 1.217


(e -> λ("live now")); tatuar -> λ("α");


Ver Perfil WWW
Re: peticion http desde spring
« Respuesta #1 en: 19 Abril 2021, 12:48 pm »

Pienso que lo mejor seria que crearas otro metodo con la anotacion @PutMapping, logrando que tengas cada metodo para una unica operacion (PUT, POST,  GET...

Aqui usas un POST para hacer un save a la misma vez que quieres tambien actualizar un item.


« Última modificación: 19 Abril 2021, 12:53 pm por rub'n » En línea



rubn0x52.com KNOWLEDGE  SHOULD BE FREE.
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen ki
ryhuso

Desconectado Desconectado

Mensajes: 25


Ver Perfil
Re: peticion http desde spring
« Respuesta #2 en: 19 Abril 2021, 12:50 pm »

Ese no es el error por que quiero que realice un post en mi apirest y un put en la petición http que es para crear una plantilla en una aplicación de microsoft.
En línea

ryhuso

Desconectado Desconectado

Mensajes: 25


Ver Perfil
Re: peticion http desde spring
« Respuesta #3 en: 19 Abril 2021, 12:56 pm »

Pienso que lo mejor seria que crearas otro metodo con la anotacion @PutMapping, logrando que tengas cada metodo para una unica operacion (PUT, POST,  GET...

Aqui usas un POST para hacer un save a la misma vez que quieres tambien actualizar un item.

lo que pasa es que si ejecuto post me pone un id aleatorio por eso uso el put para poner el que yo quiero
En línea

rub'n


Desconectado Desconectado

Mensajes: 1.217


(e -> λ("live now")); tatuar -> λ("α");


Ver Perfil WWW
Re: peticion http desde spring
« Respuesta #4 en: 19 Abril 2021, 12:56 pm »

Ese no es el error por que quiero que realice un post en mi apirest y un put en la petición http que es para crear una plantilla en una aplicación de microsoft.

Entiendo que el save lo esta haciendo bien... o no?

manda el log que arroja este metodo peticionHttpPut()
En línea



rubn0x52.com KNOWLEDGE  SHOULD BE FREE.
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen ki
ryhuso

Desconectado Desconectado

Mensajes: 25


Ver Perfil
Re: peticion http desde spring
« Respuesta #5 en: 19 Abril 2021, 13:05 pm »

Entiendo que el save lo esta haciendo bien... o no?

manda el log que arroja este metodo peticionHttpPut()
no arroja ningún error, pero se que no se ejecuta por que en la pagina web donde tiene que aparecer el dispositivo creado no existe.
 Probando el método solo si me crea lo que quiero pero al ejecutarlo desde el controller creo que viene el problema, no se si tengo que configurar algo o mandar la petición de otro modo.
En línea

ryhuso

Desconectado Desconectado

Mensajes: 25


Ver Perfil
Re: peticion http desde spring
« Respuesta #6 en: 19 Abril 2021, 13:08 pm »

no arroja ningún error, pero se que no se ejecuta por que en la pagina web donde tiene que aparecer el dispositivo creado no existe.
 Probando el método solo si me crea lo que quiero pero al ejecutarlo desde el controller creo que viene el problema, no se si tengo que configurar algo o mandar la petición de otro modo.
el save si lo ejecuta bien
En línea

rub'n


Desconectado Desconectado

Mensajes: 1.217


(e -> λ("live now")); tatuar -> λ("α");


Ver Perfil WWW
Re: peticion http desde spring
« Respuesta #7 en: 19 Abril 2021, 13:21 pm »

Doc, create otro método con la anotación @PutMapping para exponer tu endpoint de manera sincrona con RestTemplate, ella actua en otra capa de abstracción sin tocar el low level api con HttpURLConnection a mano...

Para consumirla usa un cliente estilo HttpClient de Java 11 que es ahora nativo, OKHttpClient, retrofit etc. y te ahorras mas dolor de cabeza, mas facil de depurar etc.

Y por favor, intentemos ser mas explícitos a la hora de notificar un potencial problema con nuestro codigo.

Usar siempre código geshi, log de errores, y en lo posible un minimo test de reproduccion del error.
« Última modificación: 19 Abril 2021, 13:32 pm por rub'n » En línea



rubn0x52.com KNOWLEDGE  SHOULD BE FREE.
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen ki
ryhuso

Desconectado Desconectado

Mensajes: 25


Ver Perfil
Re: peticion http desde spring
« Respuesta #8 en: 19 Abril 2021, 13:24 pm »

dog, create otro metodo con la anotacion @PutMapping para exponer tu endpoint de manera sincrona con RestTemplate, ella actua en otra capa de abstraccion sin tocar el low level api con HttpURLConnection a mano...

Para consumirla usa un cliente estilo HttpClient de Java 11 que es ahora nativo, OKHttpClient, retrofit etc. y te ahorras mas dolor de cabeza, mas facil de depurar etc.


OK lo intentare cualquier cosa la comento.
gracias.
En línea

ryhuso

Desconectado Desconectado

Mensajes: 25


Ver Perfil
Re: peticion http desde spring
« Respuesta #9 en: 19 Abril 2021, 13:36 pm »

Lo solucione usando un HttpRequest en lugar de HttpURl conection :laugh:
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Como enviar una peticion HTTP desde winsock
Programación Visual Basic
illuminat3d 1 2,445 Último mensaje 5 Enero 2009, 01:07 am
por Karcrack
Peticion HTTP por proxy
Hacking
TomaSs 2 4,646 Último mensaje 23 Junio 2011, 07:36 am
por TomaSs
Peticion HTTP desde servidor remoto
Programación General
TomaSs 0 2,907 Último mensaje 7 Junio 2011, 03:51 am
por TomaSs
Mi clase HTTP + winsock peticion HTTP ejemplo
Programación C/C++
patilanz 3 2,594 Último mensaje 28 Diciembre 2014, 00:30 am
por ivancea96
Convertir una peticion api https a http
Scripting
FRAN2016 0 1,818 Último mensaje 29 Agosto 2017, 12:05 pm
por FRAN2016
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines