如何从Azure认知服务文本翻译API获取JSON响应及改造XML返回代码
如何让微软Azure认知服务文本翻译API返回JSON格式响应
嘿,我来帮你搞定这个问题!你当前用的是微软翻译API的v2版本,它默认返回XML格式数据,但只需要简单调整请求头,就能轻松获取JSON响应了。下面分两种情况给你说明:
方法1:修改现有v2 API调用(快速适配)
你的代码只需要添加一个Accept请求头,明确指定接受application/json格式,同时要注意去掉Authorization后面的多余空格(这个小疏忽可能会导致认证失败哦)。修改后的完整代码如下:
import requests # 修正Authorization的空格问题,添加Accept头指定JSON格式 headers = { "Authorization": finalToken, "Accept": "application/json" } translateUrl = "http://api.microsofttranslator.com/v2/Http.svc/Translate?text={}&to={}".format(textToTranslate, toLangCode) translationData = requests.get(translateUrl, headers=headers) # 直接解析JSON响应,无需再处理XML translation_result = translationData.json() # 提取翻译文本,v2的JSON响应中翻译内容在"Text"字段 print(translation_result["Text"])
方法2:升级到推荐的v3 API(更稳定、功能更全)
微软已经标记v2 API为即将弃用,官方主推v3版本的翻译API——它不仅默认支持JSON格式,还提供批量翻译、语言检测、音译等更多实用功能。这里给你一个v3 API的调用示例:
import requests headers = { "Ocp-Apim-Subscription-Key": "你的API密钥", # 直接用API密钥作为认证头更简单 "Content-Type": "application/json", "Accept": "application/json" } params = { "api-version": "3.0", "to": toLangCode } # v3使用POST请求,请求体为数组,支持同时翻译多个文本 body = [{"Text": textToTranslate}] translateUrl = "https://api.cognitive.microsofttranslator.com/translate" response = requests.post(translateUrl, headers=headers, params=params, json=body) translation_result = response.json() # 提取翻译结果:v3的响应结构是数组,翻译内容在translations字段下 print(translation_result[0]["translations"][0]["text"])
小贴士:如果你的
finalToken是令牌格式,v3也支持令牌认证,只需要把Ocp-Apim-Subscription-Key换成Authorization: Bearer {finalToken}就行。
内容的提问来源于stack exchange,提问作者Adit Dharia
相关产品推荐
相关产品推荐

