首页 > 编程语言 >C# httpClient.PostAsync时出现问题Result =“ {尚未计算}”

C# httpClient.PostAsync时出现问题Result =“ {尚未计算}”

时间:2023-11-15 20:02:16浏览次数:27  
标签:C# request mfdc PostAsync Result var new inContext response

返回错误1:Id = 3129, Status = WaitingForActivation, Method = "{null}", Result = "{Not yet computed}"


返回错误2:发生了一个或多个错误

One or more errors occurred. at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions) at System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification) at System.Threading.Tasks.Task`1.get_Result()

try
            {
                using (HttpClient httpClient = new HttpClient())
                {
                    var splitArray = formData.Split(new char[] { '&' });
                    var request = new HttpRequestMessage(HttpMethod.Post, url);

                    request.Headers.Add("Authorization", apiToken);
                    var mfdc = new MultipartFormDataContent();
                    mfdc.Headers.Add("ContentType", "multipart/form-data");//声明头部
                    foreach (var item in splitArray)
                    {
                        var inContext = item.Split(new char[] { '=' });
                        if (inContext.Length >= 2)
                        {
                            mfdc.Add(new StringContent(inContext[inContext.Length - 1]), inContext[0]);// 内容在前,参数名称在后
                        }
                    }
                    request.Content = mfdc;
                    var response = httpClient.SendAsync(request).Result;
                    if (response != null)
                    {
                        HttpResponseMessage msg = response.EnsureSuccessStatusCode();
                        HttpStatusCode code = response.StatusCode;
                        if (response.IsSuccessStatusCode)
                        {
                            result = response.Content.ReadAsStringAsync().Result;
                        }

                    }
                }
            }
            catch(Exception ex)
            {

            }

解决方案:因为url是https的原因:新增https协议支持

ServicePointManager.Expect100Continue = true;

 ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;


public static string HttpsAsyncTPFormDataPost(string url, string apiToken, string formData)
        {
            string result = string.Empty;
            try
            {
                using (HttpClient httpClient = new HttpClient())
                {
                    var splitArray = formData.Split(new char[] { '&' });
                    if (!string.IsNullOrEmpty(url) && url.Contains("https"))
                    {
                        ServicePointManager.Expect100Continue = true;
                        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
                    }
                    var request = new HttpRequestMessage(HttpMethod.Post, url);

                    request.Headers.Add("Authorization", apiToken);
                    var mfdc = new MultipartFormDataContent();
                    mfdc.Headers.Add("ContentType", "multipart/form-data");//声明头部
                    foreach (var item in splitArray)
                    {
                        var inContext = item.Split(new char[] { '=' });
                        if (inContext.Length >= 2)
                        {
                            mfdc.Add(new StringContent(inContext[inContext.Length - 1]), inContext[0]);// 内容在前,参数名称在后
                        }
                    }
                    request.Content = mfdc;
                    var response = httpClient.SendAsync(request).Result;
                    if (response != null)
                    {
                        HttpResponseMessage msg = response.EnsureSuccessStatusCode();
                        HttpStatusCode code = response.StatusCode;
                        if (response.IsSuccessStatusCode)
                        {
                            result = response.Content.ReadAsStringAsync().Result;
                        }

                    }
                }
            }
            catch(Exception ex)
            {

            }
            return result;
        }

参考地址:https://www.ab62.cn/article/31018.html

https://www.itguest.com/post/bfjcbf1a2.html

https://www.jb51.net/program/2879763nb.htm

https://qa.1r1g.com/sf/ask/1817519861/

标签:C#,request,mfdc,PostAsync,Result,var,new,inContext,response
From: https://blog.51cto.com/jition/8406438

相关文章

  • mac上python安装mysqlclient模块方法
    运行pycharm后,打开命令行窗口确保您已经安装了MySQL,并且包括了MySQL的开发文件。您可以通过Homebrew来安装MySQL:brewinstallmysql#安装mysqlclient之前,先安装openssl:brewinstallopenssl#使用以下命令来安装mysqlclient:envLDFLAGS="-I/usr/local/opt/openssl/i......
  • # yyds干货盘点 # echarts图表,在notebook里为什么显示不出呢?
    大家好,我是皮皮。一、前言前几天在Python最强王者交流群【吴超建】问了一个echarts图像可视化的问题,一起来看看吧。echarts图表,在notebook里为什么显示不出呢?二、实现过程这里【巭孬......
  • C语言转义字符
    在我们实际生活中,有一些特殊的字符,它们并没有实际的意义,但是我们需要用到它们,比如换行、制表符等。在C语言中,我们可以使用转义字符来表示这些特殊的字符。转义字符是以反斜杠\开头的字符,比如\n表示换行,\t表示制表符。下面是一些常用的转义字符:转义字符含义\n换行\t......
  • KET.Application 报错:pywintypes.com_error: (-2147221005, '无效的类字符串', None,
    电脑突然有一天调用KET.Application总是报错,代码:importwin32com.clientxcl=win32com.client.DispatchEx("KET.Application")xcl.Quit()报错:pywintypes.com_error:(-2147221005,'无效的类字符串',None,None)WIN11系统,最新版WPSAI,之前用的好好的,不知道最近卸载了......
  • 论文精读:用于少样本目标检测的元调整损失函数和数据增强(Meta-tuning Loss Functions a
    论文链接:Meta-TuningLossFunctionsandDataAugmentationforFew-ShotObjectDetectionAbstract现阶段的少样本学习技术可以分为两类:基于微调(fine-tuning)方法和基于元学习(meta-learning)方法。基于元学习的方法旨在学习专用的元模型,使用学到的先验知识处理新的类,而基于微......
  • CodeForces 1895E Infinite Card Game
    洛谷传送门CF传送门容易转化成经典的有向图博弈模型。每张牌建一个点,若\(x\)能打败\(y\)就连一条\(x\toy\)的边。入度为\(0\)的点为必败态,之后类似拓扑排序倒推即可。具体就是若存在边\(u\tov\),若\(u\)为必败态则\(v\)为必胜态并加入队列;若\(v\)的所有前驱......
  • C语言中的关键字
    C语言中有32个关键字,关键字不能用作变量名、函数名、数组名等标识符。关键字的作用是用于定义变量、函数、结构体、联合体等。需要注意,这些关键字都是小写的。这些关键字分别是:auto:自动变量,用于定义自动变量。break:跳出循环,用于跳出循环。case:用于switch语句中,表示某个值......
  • echarts图表,在notebook里为什么显示不出呢?
    大家好,我是皮皮。一、前言前几天在Python最强王者交流群【吴超建】问了一个echarts图像可视化的问题,一起来看看吧。echarts图表,在notebook里为什么显示不出呢?二、实现过程这里【巭孬......
  • ASCII码
    C语言中,字符型存储的编码是ASCII码,ASCII码是一种用于显示现代英语字符的编码。ASCII码使用7位二进制数表示一个字符,共有128个字符。ASCII码的取值范围是\([0,127]\)。ASCII码的具体内容如下:ASCII码字符ASCII码字符ASCII码字符ASCII码字符\(0\)[NUL]\(32\)\(6......
  • Eclipse安装中文语言包导致部分页面功能和工作区域无法加载或使用的解决办法
    Eclipse安装中文语言包插件(eclipse菜单栏:“Help”—>“InstallNewSoftware”)出现:“Welcome”页面无法加载,“TaskList”“Outline”等工作区无法使用等情况。针对这种情况,需要卸载安装的中文语言包插件。具体步骤为:eclipse菜单栏—>“帮......