我正在运行以下 Java 代码,用于从 NSE 证券交易所的 REST API 获取期权链数据。首先,我对主页进行 GET 操作,并使用后续请求中响应中的 cookie 来实际获取选项链数据。我根据计划的任务不断重复这两个步骤。它可以工作一两次,但之后它开始在 HTTP 响应中给出 401 未经授权的错误。我在两个请求标头中设置浏览器名称。任何帮助深表感谢。
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;
import java.io.InputStream;
public class PollNSEIndia {
public static void main(String args[]) throws Exception {
while (true) {
HttpURLConnection baseUrlConnection = (HttpURLConnection) new URL("https://www.nseindia.com/").openConnection();
baseUrlConnection.setRequestProperty("Connection", "keep-alive");
baseUrlConnection.setRequestProperty("Cache-Control", "max-age=0");
baseUrlConnection.setRequestProperty("Upgrade-Insecure-Requests", "1");
baseUrlConnection.setRequestProperty(
"User-Agent",
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko)"
+ " Chrome/89.0.4389.114 Safari/537.36");
baseUrlConnection.setRequestProperty(
"Accept",
"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9");
baseUrlConnection.setRequestProperty("Accept-Language", "en-US,en;q=0.9");
List<String> cookies = baseUrlConnection.getHeaderFields().get("Set-Cookie");
URL url = new URL("https://www.nseindia.com/api/option-chain-indices?symbol=MIDCPNIFTY");
HttpURLConnection …Run Code Online (Sandbox Code Playgroud)