Monday, December 18, 2023

How to Fetch Nifty 50 data from NSE India in Java Spring Boota

 Java code to fetch Nifty 50 data from NSE 

{

private final ObjectMapper mapper;
private String cookies;

@PostConstruct
public void setCookies() {
HttpClient client = HttpClient.newHttpClient();

HttpRequest requestForCookies = HttpRequest.newBuilder()
.uri(URI.create("https://www.nseindia.com/"))
.GET()
.build();

HttpResponse<String> responseForCookies;
try {
responseForCookies = client.send(requestForCookies, HttpResponse.BodyHandlers.ofString());
} catch (IOException | InterruptedException e) {
throw new RuntimeException(e);
}

cookies = responseForCookies.headers()
.allValues("set-cookie")
.stream()
.map(cookie -> cookie.split(";", 2)[0])
.collect(Collectors.joining("; "));
}

@Override
public List<NiftyDto> getStockPrices() {
try {
String response = getNiftyDataFromNse();
log.info("reponse from NSE {}", response);
Base stockInfoList = mapper.readValue(response, Base.class);
String dataString = mapper.writeValueAsString(stockInfoList.getData());
return mapper.readValue(dataString, new TypeReference<>() {
});
} catch (InterruptedException | IOException e) {
throw new RuntimeException(e);
}
}

private String getNiftyDataFromNse() throws InterruptedException {
try {
HttpClient client = HttpClient.newHttpClient();
HttpRequest requestForApi = HttpRequest.newBuilder()
.uri(URI.create("https://www.nseindia.com/api/equity-stockIndices?index=NIFTY%2050"))
.header("Cookie", cookies)
.GET()
.build();

HttpResponse<String> responseForApi = client.send(requestForApi, HttpResponse.BodyHandlers.ofString());
return responseForApi.body();
} catch (IOException e) {
setCookies();
throw new RuntimeException(e);
}
}
}


No comments:

Post a Comment