栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

使用.net framework框架的HttpWebRequest对象请求在qt端显示非法字符的解决方案

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用.net framework框架的HttpWebRequest对象请求在qt端显示非法字符的解决方案

一、.net客户端跨平台访问其他语言开发的接口的注意事项:
qt开发的接口,使用.net framework框架的HttpWebRequest对象请求,在qt端显示非法字符,解析失败,但是同样的代码使用.net core就能请求成功,原因是.net framework使用底层是HttpWebRequest对.net framework依赖性很强,而.net core使用的底层是socket无需依赖,在网上找到一个第三方组件StandardSocketsHttpHandler(开源的)就解决了这个问题。另外,使用PostMan和python开发的应用都能正确解析,唯独.net framework框架下不行。
解决方案如下:在vs项目右键->管理NuGet程序包中下载安装HttpContent、StandardSocketsHttpHandler

 /// 
        /// 发送请求到qt接口刷新配置文件并返回结果给前端
        /// 
        /// 
        /// 
        /// 
        [WebMethod]
        public static string SendDataToWebservice(string URL, string camObj)
        {
            string retXml = "";
            try
            {
                using (var client = new HttpClient(new StandardSocketsHttpHandler()))
                {
                    client.DefaultRequestHeaders.Accept.TryParseAdd("application/json");
                    HttpContent content = new StringContent(camObj);
                    content.Headers.ContentType = new  System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
                    //由HttpClient发出异步Post请求
                    HttpResponseMessage res = client.PostAsync(URL, content).Result;
                    if (res.StatusCode == System.Net.HttpStatusCode.OK)
                    {
                        retXml = res.Content.ReadAsStringAsync().Result;
                    }
                }
                return retXml;
            }
            catch (Exception ex)
            {
                ex.StackTrace.ToString();
                System.Diagnostics.Trace.WriteLine(ex.Message);
                return retXml;
            }
 }

二、在.net框架中使用WebClient进行接口访问的方法,但是这种方法仅限在.NET平台开发的接口上使用,不能跨平台

  var wb = new WebClient();
    var data = new NameValueCollection();
    wb.Encoding = System.Text.Encoding.UTF8;
    string url = "http://192.168.2.247:8182/getgreenlossdata";
    data["startTime"] = "20220120010130";
    data["endTime"] = "20220120230130";
    try
    {
        var response = wb.UploadValues(url, "POST", data);
        Console.WriteLine(System.Text.Encoding.UTF8.GetString(response));
    }
    catch (Exception)
    {
        Console.WriteLine("测试失败!");
    }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/907356.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号