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);
}
}
}