У меня есть веб-служба, использующая другую веб-службу. Как я могу получить ответ в формате json и снова вернуть формат json. Услышь мой код: @Controller @RequestMapping ("/ idx") public class HomeController {
@GetMapping("/{name}")
public @ResponseBody List<String> idx(@PathVariable String name) {
List<String> list = new ArrayList<String>();
try {
JSONParser parser = new JSONParser();
URL url = new URL("https://api.openweathermap.org/data/2.5/weather?q = "+name+"&APPID=7dc66995a09d2c3db6e");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Accept", "application/json");
if (conn.getResponseCode() != 200) {
throw new RuntimeException("Failed : HTTP error code : "
+ conn.getResponseCode());
}
BufferedReader br = new BufferedReader(new InputStreamReader(
(conn.getInputStream())));
String output;
System.out.println("Output from Server .... \n");
while ((output = br.readLine()) != null) {
System.out.println(output);
list.add(output);
}
conn.disconnect();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return list;
}
Я вижу, что вы используете Spring framework, я бы порекомендовал вам использовать restTemplate для использования остальных API. Вы можете получить ответ в формате json, как показано ниже:
RestTemplate rest = new RestTemplate();
rest.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
JSONObject obj = rest.getForObject("https://api.openweathermap.org/data/2.5/weather?q=\"+name+\"&APPID=7dc66995a09d2c3db6e", JSONObject.class);
Если вы хотите продолжить использование HttpURLConnection
, здесь есть ответ, за которым вы можете следовать:
Разобрать JSON из объекта HttpURLConnection
Спасибо, мой друг
Возможный дубликат: stackoverflow.com/questions/10500775/…