Bing 搜索 API:使用正确的订阅密钥时出现 401 拒绝访问错误

Bing Search API: Getting 401 Acces Denied error while using the right suscription key

我正在尝试使用 Android Studio 中的 Java 连接到我新创建的 Bing 搜索 API。

当我执行 connection.getInputStream() 语句时,它 returns 一个 401 错误提示“访问被拒绝”。

当我故意提供错误的订阅密钥时,返回相同的错误。但是,我确信我使用的订阅密钥是正确的,因为我是从 Azure 控制面板复制和粘贴它的,而且它来自我唯一的订阅(试用版)。

我需要帮助,拜托了。谢谢

URL url = new URL("https://api.bing.microsoft.com/v7.0/search" + "?q=" +
                URLEncoder.encode(input, "UTF-8"));

HttpsURLConnection connection = (HttpsURLConnection)url.openConnection();
connection.setRequestProperty("Ocp-Apim-Subscription-Key", "(  censored  )");

try{

InputStream stream = connection.getInputStream();

}catch (Exception e){ 

//java.io.FileNotFoundException: https://api.bing.microsoft.com/v7.0/search?q=...

int c = connection.getResponseCode(); // = 401
String s = connection.getResponseMessage(); // = "Acces Denied"

}

我在尝试调用 Bing 网络搜索 API 时遇到了同样的错误。我通过创建一个认知服务实例并使用它的端点和密钥解决了这个问题:

这是我基于你的测试代码:

import java.io.InputStream;
import java.net.URL;
import java.net.URLEncoder;

import javax.net.ssl.HttpsURLConnection;

public class HTTPtest {

    public static void main(String[] args) {
        String Endpoint = "<Endpoint>";
        String key = "<key>";

        String input = "Bill Gates divorce";

        try {
            URL url = new URL(Endpoint + "bing/v7.0/search" + "?q=" + URLEncoder.encode(input, "UTF-8"));

            HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
            connection.setRequestProperty("Ocp-Apim-Subscription-Key", key);

            InputStream stream = connection.getInputStream();

            System.out.println(new String(stream.readAllBytes()));

        } catch (Exception e) {

            System.out.println(e.getMessage());

        }
    }
}

结果:

如果您还有其他问题,请告诉我。