API Microsoft Translator 异常:“根级别的数据无效。第 1 行,位置 1。”
Posted
技术标签:
【中文标题】API Microsoft Translator 异常:“根级别的数据无效。第 1 行,位置 1。”【英文标题】:API Microsoft Translator Exception: "The data at the root level is invalid. Line 1, position 1." 【发布时间】:2021-03-24 13:08:06 【问题描述】:我正在将微软翻译从 v2 迁移到 v3。 但我收到以下异常:
反序列化 System.String 类型的对象时出错。根级别的数据无效。第 1 行,位置 1。 (System.Runtime.Serialization.SerializationException)
内部异常:根级别的数据无效。第 1 行,位置 1。 System.Exception System.Xml.XmlException
此错误发生在这行代码上:
translation.Append((string)dcs.ReadObject(response));
完整方法:
public string TranslateText(string from, string to, string text)
var token = string.Empty;
try
retryPolicy.Execute(() =>
token = azureAuthentication.GetAccessToken();
);
var translation = new StringBuilder();
int charLength = Configuration.Configuration.CharLength;
List<string> lines = text.Split('.').Aggregate(new[] "" .ToList(), (a, x) =>
var last = a[a.Count - 1];
if ((last + x).Length > charLength)
a.Add(x);
else
a[a.Count - 1] = ($"lastx.");
return a;
);
foreach (var str in lines)
string uri =$"https://api.cognitive.microsofttranslator.com/languages?api-version=3.0&scope=translation&textType=HttpUtility.UrlEncode(str)&from=from_lang&to=to_lang";
var httpWebRequest = (HttpWebRequest)WebRequest.Create(uri);
httpWebRequest.Headers.Add("Authorization", token);
try
retryPolicy.Execute(() =>
using (var response = httpWebRequest.GetResponse().GetResponseStream())
var dcs = new DataContractSerializer(Type.GetType("System.String"));
translation.Append((string)dcs.ReadObject(response));
);
catch (Exception ex)
throw new ExternalServiceUnavailableException(ex.Message, ex);
return translation.ToString();
catch(Exception ex)
throw new ExternalServiceUnavailableException(ex.Message, ex);
我不知道为什么会发生此错误。我查看了有关此错误的其他问题,但我不确定如何在此处实施这些解决方案。
谢谢
【问题讨论】:
docs.microsoft.com/en-us/azure/cognitive-services/translator/… 【参考方案1】:我认为您的请求中有错误,因此反序列化失败。
我觉得这部分
from=from_lang&to=to_lang
应该
from=from_lang&to=to_lang
您设置为 from_lang 的文字字符串,而不是有效语言的名称,例如 en 或 es。
【讨论】:
以上是关于API Microsoft Translator 异常:“根级别的数据无效。第 1 行,位置 1。”的主要内容,如果未能解决你的问题,请参考以下文章
在Application中集成Microsoft Translator服务之使用http获取服务
在Application中集成Microsoft Translator服务之开发前准备
在Application中集成Microsoft Translator服务之优化
AI Translator | Microsoft gets offline AI-powered translations