Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

816
Visualizações
¿Cómo enviar JSON como parámetro en url usando Spring RestTemplate?

Estoy tratando de lograr lo mismo que esto: ¿Cómo usar el parámetro de consulta representado como JSON con Spring RestTemplate? , enviando una cadena JSON como un parámetro de URL en restTemplate.exchange() .

La respuesta aceptada menciona que enviar un objeto JSON como parámetro de solicitud generalmente no es una buena idea, ya que probablemente tendrá problemas con los corchetes dentro de JSON. Eso es exactamente lo que sucede cuando intento hacer una llamada GET a una API. Dado que esta es una API de otro sistema, no puedo pedirles que cambien el formato y tendré que llamar al punto final GET, pasando JSON como parámetro. ¿Cómo puedo lograr esto en la llamada restTemplate.exchange() ?

Nota: La pregunta relacionada mencionada no es una guía sobre cómo superar este problema y no tengo suficiente reputación para comentarla y preguntarle al autor de la respuesta.

about 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Respondiendo a mi propia pregunta. Si bien es una mala idea pasar JSON como este en un parámetro de consulta/url, hay una solución alternativa como se sugiere aquí: https://jira.spring.io/browse/SPR-9220?focusedCommentId=76760&page=com.atlassian. jira.plugin.system.issuetabpanels:comment-tabpanel#comment-76760 .
Replicando el código aquí en caso de que este enlace se corte:

 String url = "http://localhost:8983/solr/select?wt=json&indent=true&fl=*&q=*:*&fq={!geofilt}&sfield=venue_location&pt=28.0674,-80.5595&d=25"; URI uri = UriComponentsBuilder.fromUriString(url).build().encode().toUri(); System.out.println(uri); // http://localhost:8983/solr/select?wt=json&indent=true&fl=*&q=*:*&fq=%7B!geofilt%7D&sfield=venue_location&pt=28.0674,-80.5595&d=25

Básicamente, en lugar de pasar una URL con parámetros de consulta/URL JSON como una cadena, pásela como una URI. Luego llame al método de exchange como antes, pero con URI en lugar de String:

 restTemplate.exchange(uri, HttpMethod.GET, requestEntity, String.class)
about 4 years ago · Santiago Trujillo Relatório

0

Si se trata de una API de terceros y no puede controlar o cambiar el procesamiento JSON en el backend, no hay solución. Incluso si codificará con URLEncoder, no hay garantía de que el backend de la API procese dicha solicitud correctamente.

about 4 years ago · Santiago Trujillo Relatório

0

Puede usar la clase URLEncoder para codificar la URL en el método de exchange , por ejemplo:

 String url = "http://www.yoursite.com/api?param={\"some_key\":\"some_value\"}"; System.out.println(URLEncoder.encode(url, StandardCharsets.UTF_8.name()));

Esto codificará los caracteres (como llaves y comillas dobles) y el servidor lo decodificará de nuevo a json .

about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda