Bing拼写检查器API无返回结果求助:调用异常排查
排查Bing拼写检查API无返回结果的问题
以下是针对你遇到的问题的具体排查方向和解决方案:
1. 确认请求方法是否正确
Bing拼写检查API必须使用POST请求,而非GET。你提供的URL是GET格式的参数拼接,不符合API要求。正确做法:
- 请求URL:
https://api.bing.microsoft.com/v7.0/spellcheck - 将
text=mus、mkt=en-GB、mode=spell作为POST表单参数(或JSON体)传递,不要放在URL中。
2. 验证API密钥的有效性和权限
- 登录Azure门户,确认密钥对应的资源是「Bing Spell Check」,而非其他Bing服务(如搜索)。
- 检查密钥是否过期、被吊销,或使用区域与密钥授权区域不匹配。
- 确认免费层调用额度未耗尽:免费订阅每月有调用次数限制,超出后会无结果返回。
3. 检查请求头和参数格式
- 必须在请求头中添加
Ocp-Apim-Subscription-Key字段,值为你的API密钥。 - POST请求的
Content-Type需设置为application/x-www-form-urlencoded(表单参数)或application/json(JSON体),参数要正确编码。 - 确认
mode参数取值正确:spell侧重拼写修正,proof包含拼写和语法检查,但都需遵循参数传递规范。
4. 测试最小化有效请求
先在Postman中构造最简请求验证:
- 请求方法:POST
- URL:
https://api.bing.microsoft.com/v7.0/spellcheck - 请求头:
Ocp-Apim-Subscription-Key: 你的API密钥Content-Type: application/x-www-form-urlencoded
- 请求体(表单参数):
text=mus&mkt=en-GB&mode=spell
如果该请求能返回结果,再逐步迁移到Refit代码中。
5. Refit代码的常见问题
确保接口定义符合POST参数传递要求:
public interface IBingSpellCheckApi { [Post("/v7.0/spellcheck")] Task<SpellCheckResponse> CheckSpelling( [Header("Ocp-Apim-Subscription-Key")] string apiKey, [Body(BodySerializationMethod.UrlEncoded)] Dictionary<string, string> parameters); } // 调用示例 var parameters = new Dictionary<string, string> { {"text", "mus"}, {"mkt", "en-GB"}, {"mode", "spell"} }; var response = await _api.CheckSpelling("你的API密钥", parameters);
注意不要将参数拼接到URL中,需通过表单体传递。
内容的提问来源于stack exchange,提问作者Sach K
相关产品推荐
相关产品推荐

