C# 如何在O365 Power Automation HTTP请求连接器上发送参数
我已经排除了这几天,但仍然没有运气。 我正在尝试将参数发送到Microsoft O365 Power Automation提供的API链接,此API需要客户编号、公司代码和发布日期,作为回报,它将向我发送一个表,其中包含具有相同客户编号、公司代码、,和发布日期。当我在Postman中进行测试时,发送状态代码200,但当使用VS和我的代码时,它总是返回状态代码400 SoaController.csC# 如何在O365 Power Automation HTTP请求连接器上发送参数,c#,httprequest,power-automate,asp.net-core-5.0,o365-flow,C#,Httprequest,Power Automate,Asp.net Core 5.0,O365 Flow,我已经排除了这几天,但仍然没有运气。 我正在尝试将参数发送到Microsoft O365 Power Automation提供的API链接,此API需要客户编号、公司代码和发布日期,作为回报,它将向我发送一个表,其中包含具有相同客户编号、公司代码、,和发布日期。当我在Postman中进行测试时,发送状态代码200,但当使用VS和我的代码时,它总是返回状态代码400 SoaController.cs [HttpPost] public async Task<IActionResult>
[HttpPost]
public async Task<IActionResult> Index(string company, string customer, string asof)
{
using (var client = new HttpClient())
{
SoaParams soaParams = new SoaParams
{
Posting_Date = asof,
Company_Code = company,
Customer_Number = customer
};
var SoaJson = JsonConvert.SerializeObject(soaParams);
var buffer = Encoding.UTF8.GetBytes(SoaJson);
var byteContent = new ByteArrayContent(buffer);
byteContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
client.BaseAddress = new Uri(SD.ApiUri);
var response = await client.PostAsync(SD.ApiUri, byteContent);
if (response.IsSuccessStatusCode)
{
return RedirectToAction(nameof(Success), Json(response));
}
else
{
return RedirectToAction(nameof(Failed), Json(response));
}
}
}
[HttpPost]
公共异步任务索引(字符串公司、字符串客户、字符串asof)
{
使用(var client=new HttpClient())
{
SoaParams SoaParams=新SoaParams
{
过账日期=asof,
公司代码=公司,
客户号=客户
};
var SoaJson=JsonConvert.SerializeObject(soaParams);
var buffer=Encoding.UTF8.GetBytes(SoaJson);
var byteContent=新的ByteArrayContent(缓冲区);
byteContent.Headers.ContentType=新的MediaTypeHeaderValue(“应用程序/json”);
client.BaseAddress=新Uri(SD.ApiUri);
var response=wait client.PostAsync(SD.ApiUri,byteContent);
if(响应。IsSuccessStatusCode)
{
返回RedirectToAction(nameof(Success)、Json(response));
}
其他的
{
返回RedirectToAction(nameof(失败),Json(响应));
}
}
}
下图显示了所需的参数是正确的。
但是它是
SuccessStatusCode
总是返回false
您收到的请求不正确(400)。有两件事正在发生:1)c#中的默认HTTP头与postman中的不同。您可能需要修改标题。通常是UserAgent指定浏览器的类型()2)您无法通过使用TLS完成的HTTP身份验证。要么使用http而不是https,要么在应该使用http时使用https。尝试将以下内容添加到代码开头:ServicePointManager.SecurityProtocol |=SecurityProtocolType.Tls12;嗨@jdweng,我试图添加代码,但它有相同的输出。我有挂号邮递员,有23个邮件头。这里是O365 Power Automation的测试API链接,如果邮递员给你的是标题,而不是你没有使用https,这将显示加密数据。看起来您正在发送带有正文(内容)的请求。当你向一个机构发送请求时,它就是一个帖子。你错过了那个职位。请参阅:Yes@jdweng测试数据有一个正文内容。我的最后一个链接有两行需要1)request.Method=“POST”;2) request.ContentLength=byteArray.Length;一个请求有三个部分:1)URL,有时在问号2)HTTP头3)正文后有参数。你们知道邮递员头像和身体的区别吗?不确定这23个标题是真正的标题还是正文的一部分。文章和内容长度是标题。