You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用Bing API加载搜索结果时遇“no host given”错误求助

解决Bing API报错「no host given」的问题

嘿,我看到你在调用Bing搜索API时碰到了「Bing API error: no host given」的错误,咱们先从最明显的问题入手解决:

1. 修正API基础URL的拼写错误

你代码里的root_url存在两处低级拼写错误,这正是导致「no host given」的核心原因:

  • 错误写法:"https:a//pi.cognitive.microsoft.com/bing/v7.0/search"
  • 正确写法:"https://api.cognitive.microsoft.com/bing/v7.0/search"

错误点拆解:

  • 多了一个多余的a:https:a// → 应该是标准的https://
  • 域名拼写错误:pi → 正确的是api

2. 确保请求头包含认证密钥

除了URL问题,还要确认你在请求中正确添加了Bing API要求的认证头。Bing Search API v7需要在请求头里带上Ocp-Apim-Subscription-Key,值就是你的API密钥。

这里给你补全修正后的代码片段:

import json
import urllib.request, urllib.parse, urllib.error

def run_query(search_terms):
    # 修正后的API基础URL
    root_url = "https://api.cognitive.microsoft.com/bing/v7.0/search"
    source = 'Web'
    
    # 构造请求参数
    params = urllib.parse.urlencode({
        'q': search_terms,
        'count': 10,  # 可根据需求调整返回结果数量
        'offset': 0,
        'mkt': 'en-US',  # 可根据需求调整市场区域
        'safeSearch': 'Moderate'
    })
    
    # 构造请求对象,添加认证头
    request = urllib.request.Request(f"{root_url}?{params}")
    # 替换成你的API密钥
    request.add_header('Ocp-Apim-Subscription-Key', '#api key here')
    
    try:
        # 发送请求并解析响应
        response = urllib.request.urlopen(request)
        results = json.loads(response.read().decode('utf-8'))
        return results
    except urllib.error.URLError as e:
        print(f"请求出错: {e}")
        return None

3. 额外检查点

  • 确认你的API密钥是有效的,没有过期或权限限制
  • 如果使用的是Azure上的Bing资源,确认资源的端点域名是否和代码中的一致(有些区域的端点可能略有不同)

内容的提问来源于stack exchange,提问作者Umar Khan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:24:21