相关疑难解决方法(0)

即使在标头中设置浏览器名称和 cookie 后仍收到 401 Unauthorized

我正在运行以下 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)

java rest http

3
推荐指数
1
解决办法
442
查看次数

标签 统计

http ×1

java ×1

rest ×1