首页 > 编程语言 >C#调用webapi发送带json参数的post请求

C#调用webapi发送带json参数的post请求

时间:2024-01-14 10:04:54浏览次数:36  
标签:webapi string C# writer dic json myRequest 请求

嗯。。很久不更新,因为跳槽新公司了,要学的东西太多太忙了。也没时间记录,今天又写了一个C#调用webapi发送带json参数的post请求拿数据的方法,所以来到这里记录一下

/// <param name="url">请求地址</param>
        /// <param name="jsonParas">请求体</param>
        /// <param name="method">请求方法</param>
        /// <param name="contentType"></param>
        /// <returns></returns>
        public string GetLoginJson(string url, string jsonParas, string method = "POST", string contentType = "application/json")
        {
            HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url);
            HttpWebResponse myResponse;
            myRequest.Method = method;//请求方式
            myRequest.ContentType = contentType;
            //将Json字符串转化为字节  
            byte[] data = Encoding.UTF8.GetBytes(jsonParas);
            //设置请求的ContentLength   
            myRequest.ContentLength = data.Length;
            //发送请求,获得请求流 
            Stream writer;
            try
            {
                writer = myRequest.GetRequestStream();//获取用于写入请求数据的Stream对象
            }
            catch (Exception)
            {
                writer = null;
                Console.Write("连接服务器失败!");
            }
            //将请求参数写入流
            writer.Write(data, 0, data.Length);
            writer.Close();//关闭请求流
            try
            {
                //获得响应流
                myResponse = (HttpWebResponse)myRequest.GetResponse();
            }
            catch (WebException ex)
            {
                myResponse = ex.Response as HttpWebResponse;
            }
            Stream s = myResponse.GetResponseStream();
            //  Stream postData = Request.InputStream;
            StreamReader sRead = new StreamReader(s, Encoding.UTF8);
            string postContent = sRead.ReadToEnd();
            sRead.Close();
            return postContent;
        }

这段代码是调用的时候传入请求地址和json串就行了

如果要添加请求头的话直接在myRequest下边加一行 myRequest.Headers.Add("id", 123123);,一般是请求时需要验证身份的密钥什么的

下边看如何调用

//请求并解析返回的json数据
        public string GetSession()
        {
            string url = "http://xxxxx.com.cn/api/Login";
            Dictionary<string, string> dic = new Dictionary<string, string>();
            dic.Add("aaa", "123");
            dic.Add("bbb", "123");
            dic.Add("ccc", "123");
            dic.Add("ddd", "123");
            string JsonBody = JsonConvert.SerializeObject(dic);//转成json格式
            string ResponseJson = GetLoginJson(url, JsonBody);//在这里调用的
            //Models.FarEastoneGetSessionId.Root是我定义的一个实体类用来存放返回的json数据了
            Models.FarEastoneGetSessionId.Root rt = JsonConvert.DeserializeObject<Models.FarEastoneGetSessionId.Root>(ResponseJson);
            string id = rt.Content.sessionId;//取出实体类中的数据并输出
            return id;
        }

然后处理数据就行了

转载请注明出处

 

标签:webapi,string,C#,writer,dic,json,myRequest,请求
From: https://blog.51cto.com/u_16371710/9238079

相关文章

  • C#将从数据库查处的table格式的数据转为json
    这里的代码是封装好的类,将Datatable作为参数传进来即可解析出json格式的数据,看代码publicstaticstringToJson(DataTabledt){intcount=dt.Rows.Count;//将DataTable格式的数据转换成json格式StringBuilderjsonBuilder=ne......
  • C#实现串口通讯的方法
    帖子只用于记录本人的学习记录,算是给未来的自己出一份傻瓜式教学。 在C#语言上,一般上位机是由Winform开发,也有WPF,但是我不会WPF上位机无非就是发送数据与接收数据,可以使用C#的SerialPort方法winform自带SerialPort控件,可以将此控件直接拖到页面上,然后实例化该控件,也可以直接实例化......
  • C#中substring ()的用法
    String.SubString(int index,int length)  index:开始位置,从0开始   length:你要取的子字符串的长度  示例:usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespacestr_sub{classProgram{staticvoidMain(string[]args){strin......
  • C#常用工具安装方法及资源整理
    1、GitGit下载地址Git安装教程2、SQLServer2019下载地址安装教程3、VisualStudio2022下载地址安装教程4、TortoiseGit(x64)  2.13.0.1中文版下载地址安装教程5、sqlserver2014下载及安装教程......
  • Helm概述,安装,部署,chart模板使用
    Helm概述Helm是一个用于管理Kubernetes应用程序的工具,它提供了一个简单而有效的方式来定义、安装和部署应用程序。Helm通过使用可重复使用的模板(称为Charts)来描述应用程序的Kubernetes资源,并提供了一个命令行界面来管理这些Charts。Helm的核心概念包括:Chart:Chart是Helm的基本单元,它......
  • React-hook-form-mui(一):基本使用
    前言在项目开发中,我们选择了React+MUI作为技术栈。在使用MUI构建form表单时,我们发现并没有与antd类似的表单验证功能,于是我们选择了MUI推荐使用的react-hook-form-mui库去进行验证。但是发现网上关于这个库的使用方法和demo比较少且比较简单,并没有复杂的表单验证的demo。因此本文及......
  • Auto CAD
    快捷命令 L直线M移动C圆EL椭圆XL射线轴线RO旋转E删除H填充TR修剪EX延伸PO点S拉伸U返回DDI直径标注DAN角度标注OP系统选项设置A圆弧T多行文字B块定义I块插入W定义块文件CO复制MI镜像O偏移F倒直角或圆角D标注样式DLI线......
  • centos安装gcc 4.9.4 版本
    系统:centos7.6因为在安装hyperf热加载时需要用到fswatch,安装fswatch需要gcc4.9以上的版本,但是系统自带的gcc只有4.8的版本,所以我们需要安装4.9的,这里我安装的是4.9.4的版本:yuminstall-ygccgcc-c++#因为我有自带的gcc所以不用安装,如果没有的话。需要先安装yum自带的gcc......
  • React 详解(1)
    React简介React基础JSX的本质JSX并不是标准的JS语法,它是JS的语法扩展,浏览器本身不能识别,需要通过解析工具做解析之后才能在浏览器中运行。这里主要依靠BABEL解析工具来解析,下面简单的介绍一下这个解析工具(http://babeljs.io):JSX中使用JS表达式在JSX中可以通过大括号语法......
  • AUTOCAD快捷键
    快捷命令L直线M移动C圆EL椭圆XL射线轴线RO旋转E删除H填充TR修剪EX延伸PO点S拉伸U返回DDI直径标注DAN角度标注OP系统选项设置A圆弧T多行文字B块定义I块插入W定义块文件CO复制MI镜像O偏移F倒直角或圆角D标注样式DLI线性......