C#接口收发功能实现,post提交,get获取

C#接口收发功能实现

接口using引用
在这里插入图片描述

using Newtonsoft.Json;  //一定要先下载Newtonsoft.json.dll并添加引用
using Newtonsoft.Json.Linq;
using System.Data;
using System.IO;

一、post提交
重点代码:
RequestWebAPI函数为post上传功能,里面的内容不需要修改,直接复制到代码里就行。

 public static string RequestWebAPI(string url, string sendData)
        {
            string backMsg = "";
            try
            {
                System.Net.WebRequest httpRquest = System.Net.HttpWebRequest.Create(url);
                httpRquest.Method = "POST";
                //这行代码很关键,不设置ContentType将导致后台参数获取不到值  
                httpRquest.ContentType = "application/json;charset=UTF-8";
                byte[] dataArray = System.Text.Encoding.UTF8.GetBytes(sendData);
                //httpRquest.ContentLength = dataArray.Length;  
                System.IO.Stream requestStream = null;
                if (string.IsNullOrWhiteSpace(sendData) == false)
                {
                    requestStream = httpRquest.GetRequestStream();
                    requestStream.Write(dataArray, 0, dataArray.Length);
                    requestStream.Close();
                }
                System.Net.WebResponse response = httpRquest.GetResponse();
                System.IO.Stream responseStream = response.GetResponseStream();
                System.IO.StreamReader reader = new System.IO.StreamReader(responseStream, System.Text.Encoding.UTF8);
                backMsg = reader.ReadToEnd();


                reader.Close();
                reader.Dispose();


                requestStream.Dispose();
                responseStream.Close();
                responseStream.Dispose();
            }
            catch (Exception)
            {
                throw;
            }
            return backMsg;
        }

调用:

string api = “http://url”//这里写接口地址
string sendstr ={}”;//这里写需要上传的参数,json格式
string js = RequestWebAPI(api, sendstr);
JObject jo = (JObject)JsonConvert.DeserializeObject(js);//将接口内的json数据转为json对象
string msg = jo["msg"].ToString();//获取到jo对象中msg的值,具体根据接口传回的数据来写
JArray ja = JArray.Parse(obj["data"].ToString());//将json对象转换为数组,就可以遍历数组了
for (int i = 0; i < ja.Count; i++)
            {
                string kehuid = obj["data"][i]["Id"].ToString();  //这里可以取ja中的值
                string yue = obj["data"][i]["yue"].ToString();
                string kehuname = obj["data"][i]["kehuname"].ToString();
            }
//这里是我写的最简单的post传参方式,直接使用&传参

//上传参数
 string api = http://127.0.0.1/service/xxxx?id1='1'&id2=2
 string sendstr ="{}"
 string js = RequestWebAPI(api, sendstr);
 JObject jo = (JObject)JsonConvert.DeserializeObject(js);
 
 //调用方法
  public static string RequestWebAPI(string url, string sendData)
        {
            string backMsg = "";
            try
            {
                System.Net.WebRequest httpRquest = System.Net.HttpWebRequest.Create(url);
                httpRquest.Method = "POST";
                //这行代码很关键,不设置ContentType将导致后台参数获取不到值  
                httpRquest.ContentType = "application/json;charset=UTF-8";
                byte[] dataArray = System.Text.Encoding.UTF8.GetBytes(sendData);
                //httpRquest.ContentLength = dataArray.Length;  
                System.IO.Stream requestStream = null;
                if (string.IsNullOrWhiteSpace(sendData) == false)
                {
                    requestStream = httpRquest.GetRequestStream();
                    requestStream.Write(dataArray, 0, dataArray.Length);
                    requestStream.Close();
                }
                System.Net.WebResponse response = httpRquest.GetResponse();
                System.IO.Stream responseStream = response.GetResponseStream();
                System.IO.StreamReader reader = new System.IO.StreamReader(responseStream, System.Text.Encoding.UTF8);
                backMsg = reader.ReadToEnd();


                reader.Close();
                reader.Dispose();


                requestStream.Dispose();
                responseStream.Close();
                responseStream.Dispose();
            }
            catch (Exception)
            {
                throw;
            }
            return backMsg;
        }

二、get请求获取
重点代码和post上传一样,使用GetInfo函数获取接口内的数据,这个函数名随便自己取

 public static string GetInfo(string url)
        {
            //访问http方法
            string strBuff = "";
            Uri httpURL = new Uri(url);
            ///HttpWebRequest类继承于WebRequest,并没有自己的构造函数,需通过WebRequest的Creat方法建立,并进行强制的类型转换   
            HttpWebRequest httpReq = (HttpWebRequest)WebRequest.Create(httpURL);
            ///通过HttpWebRequest的GetResponse()方法建立HttpWebResponse,强制类型转换   
            HttpWebResponse httpResp = (HttpWebResponse)httpReq.GetResponse();
            ///GetResponseStream()方法获取HTTP响应的数据流,并尝试取得URL中所指定的网页内容   
            ///若成功取得网页的内容,则以System.IO.Stream形式返回,若失败则产生ProtoclViolationException错误。在此正确的做法应将以下的代码放到一个try块中处理。这里简单处理   
            Stream respStream = httpResp.GetResponseStream();
            ///返回的内容是Stream形式的,所以可以利用StreamReader类获取GetResponseStream的内容,并以   
            //StreamReader类的Read方法依次读取网页源程序代码每一行的内容,直至行尾(读取的编码格式:UTF8)   
            StreamReader respStreamReader = new StreamReader(respStream, Encoding.UTF8);
            strBuff = respStreamReader.ReadToEnd();
            return strBuff;
        }

调用

   string url = "";//这里填接口地址   
   string userInfo = GetInfo(url);
  JObject obj = (JObject)JsonConvert.DeserializeObject(userInfo);
   JArray ja = JArray.Parse(obj["data"].ToString());
   for (int i = 0; i < ja.Count; i++)
            {
                string kehuid = obj["data"][i]["Id"].ToString();  //这里可以取ja中的值
                string yue = obj["data"][i]["yue"].ToString();
                string kehuname = obj["data"][i]["kehuname"].ToString();
            }

总结
传参需要string一个sendstr,存放json格式的参数,也可以直接用?参数&参数来传
获取只需要url就行了,获取到的json对象,通过jarray转换为可以用的json数组,才能for循环遍历
新手开发过程中的总结,如果有错误请大佬们指出!!!

你可能感兴趣的:(c#,json,开发语言,接口,后端)