Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在O365 Power Automation HTTP请求连接器上发送参数_C#_Httprequest_Power Automate_Asp.net Core 5.0_O365 Flow - Fatal编程技术网

C# 如何在O365 Power Automation HTTP请求连接器上发送参数

C# 如何在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>

我已经排除了这几天,但仍然没有运气。 我正在尝试将参数发送到Microsoft O365 Power Automation提供的API链接,此API需要客户编号、公司代码和发布日期,作为回报,它将向我发送一个表,其中包含具有相同客户编号、公司代码、,和发布日期。当我在Postman中进行测试时,发送状态代码200,但当使用VS和我的代码时,它总是返回状态代码400

SoaController.cs

[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个标题是真正的标题还是正文的一部分。文章和内容长度是标题。