Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

822
Views
¿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.

over 4 years ago · Santiago Trujillo
3 answers
Answer question

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)
over 4 years ago · Santiago Trujillo Report

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.

over 4 years ago · Santiago Trujillo Report

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 .

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!