我有一个Logic App,它可以从SharePoint(.xlsx)获取内容,并将正文发布到端点进行处理。现在我看到的内容是一个base64编码的文件,我想要做的就是按原样发布此数据。
当我尝试使用邮递员发布它时,它被成功接受,但是当它从Logic应用程序中发布时,我得到了
BadRequest。 Http请求失败:内容不是有效的JSON。
但是我可以看到要发送的正文是有效的Json类型
def func(x):
d = eval(x['c'])
x['a'] = d['a']
x['b'] = d['b']
return x
df = df.apply(lambda x : func(x), axis=1)
也尝试过此表达式
{
"$content-type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
"$content": "AA....VeryLong...B1241BACDFA=="
}
但是我得到了另一个错误
InvalidTemplate。无法在行“ 1”和列“ 2565”的操作“ HTTP”输入中处理模板语言表达式:'模板语言表达式'decodeBase64(triggerBody()?[body('getFile')]))'无法评估,因为属性'{ “ $ content-type”:“ application / vnd.openxmlformats-officedocument.spreadsheetml.sheet”, “ $ content”:“ UEsDBBQABgAIAAAAIQDuooLHjAEAAJkGAAATAAgCW0Nvb ...
我想要实现的过程很简单,实际上我想将Json或base64Encoded字符串的内容发布到终点。
答案 0 :(得分:1)
能否将您的邮递员请求发给我,将其保存在收集中,然后导出为文件。 我认为您在邮递员中可以做的事情也可以在逻辑应用程序中完成。 或将您的代码发送给我,我可以对其进行修改。确保您将post作为正文,并且与web api级别的Post参数匹配。
var Webrequestdata = {
"webserviceurl": "http://examplecom/u/b/b/e.ee.msg",
"username": "123"
};
$.ajax({
cache: false,
type: "POST",
url: 'http://example.com/res/api/Outlookapi',
data: JSON.stringify(Webrequestdata),
contentType: "application/json",
success: function (result) {
console.log("email sent successfully");
},
error: function (response) { alert('Error: ' + response.responseText); }
});
答案 1 :(得分:1)
查看您的陈述后:
Logic App从SharePoint(.xlsx)获取内容,并发布 主体到端点进行处理。现在我看到的内容是 base64编码的文件
我假设您的端点仍在寻找内容类型-
vnd.openxmlformats-officedocument.spreadsheetml.sheet
但是您正在传递Base64字符串
1)检查“内容类型”标头是否正确放置,如有可能,将其更改为application / json
2)确保您正确处理了base64字符串。
就我而言,我使用Javascript从图像文件中提取了base64字符串。我在base64字符串的开头有特殊键,例如''data:image / png; base64','ACTUAL BASE 64 STRING ...' ,因此我删除了特殊键带有某些正则表达式的实际base64字符串之前的键。 此示例Json请求可能有助于附加base64内容
确保使用 JSON.stringify
将请求转换为JSON //var finalString = srcData.replace('data:image/png;base64,','');
var finalString = srcData.replace(/^,+?(\,)/, '');
finalString = srcData.substring(srcData.indexOf(',')+1, srcData.length);
var data = JSON.stringify({
"requests": [
{
"image": {
"content": finalString
},
"features":
[
{
"type": "DOCUMENT_TEXT_DETECTION",
"maxResults": 1
}
]
}
]
});
这是我使用的XMLHttpRequest:
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === 4) {
console.log(this.responseText);
var obj = JSON.parse(this.responseText);
try
{
//do something
}catch(err)
{
//do something
}
}
});
try {
xhr.open("POST", "https://vision.googleapis.com/v1/images:annotate?key=blablabla");
xhr.setRequestHeader("Content-Type", "application/json");
xhr.setRequestHeader("cache-control", "no-cache");
xhr.setRequestHeader("Postman-Token", "111111111");
xhr.send(data);
}
catch(err) {
//do something
}
答案 2 :(得分:0)