使用XMLHttpRequest调用MS Flow GET请求时遇EntityName解析错误求助
解决XMLHttpRequest调用MS Flow时的“An error occurred while parsing EntityName”错误
我一眼就看出问题出在你的URL里的转义字符上!咱们一步步来排查:
核心问题:URL中的HTML转义字符&
你写的URL里用了&来分隔参数,但这是HTML的转义序列,用来在HTML文本中表示&符号。而在JavaScript的字符串里直接使用&的话,XMLHttpRequest在处理请求时,会把它当作XML实体来解析,自然就会抛出“解析实体名称时出错”的错误——因为amp不是合法的XML实体名称(除非你专门定义它,但显然这里不需要)。
修正方案:把&替换成普通的&
只需要将URL中所有的&替换成&,就能解决这个解析错误。
修正后的代码示例:
var finalurl = "https://prod4-30.centralindia.logic.azure.com:443/workflows/ed30ad9219a940fa8e5af317cf697e4c/triggers/manual/paths/invoke?api-version=2016-06-01&sp=/triggers/manual/run&sv=1.0&sig=ctQe3OAscgTfzDgji9gS_B43lvHEV4JP-hGdaxu46wg"; function DohttpRequest(greeting) { // 补全XMLHttpRequest逻辑示例 var xhr = new XMLHttpRequest(); xhr.open('GET', finalurl, true); xhr.onload = function() { if (xhr.status >= 200 && xhr.status < 300) { console.log('请求成功:', xhr.responseText); } else { console.error('请求失败:', xhr.statusText); } }; xhr.onerror = function() { console.error('网络错误'); }; xhr.send(); }
额外说明
如果这个URL是从HTML元素(比如<a>标签的href属性)中获取的,那它很可能是被HTML自动转义了。这种情况下,你可以用更通用的方法解码,比如:
// 通用HTML实体解码函数 function decodeHtmlEntities(str) { var textArea = document.createElement('textarea'); textArea.innerHTML = str; return textArea.value; } // 解码带有&的URL var escapedUrl = "你的带&的原URL"; var decodedUrl = decodeHtmlEntities(escapedUrl);
这样修改后,你的XMLHttpRequest请求应该就能正常解析URL,顺利调用MS Flow的接口了!
内容的提问来源于stack exchange,提问作者TARUN
相关产品推荐
相关产品推荐

