C#使用git与post请求,发送json格式内容

我使用python的falsk框架进行服务的模拟接收
文章链接:https://blog.csdn.net/qq_42102546/article/details/130425504

你可以复制接收部分的内容运行,进行Post发送验证

git与post请求(带参数的post请求)

代码组成部分:

  1. 建立一个类,此类json解析或者发送的必要的东西
  2. git与post请求
  3. json的打包与发送
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
// json 使用的库 需要在引用内添加:System.Web.Extensions
using System.Web.Script.Serialization;
using System.IO;
// Http 使用的库
using System.Net;

namespace ConsoleApplication3
{
    // json 需要被序列化所必须创建的类
    // 也就是你需要发送或接受的内容固定格式
    class person
    {
        // 名字
        public string name { get; set; }
        // 年龄
        public int age { get; set; }
        // 用来方便打印查看内容的
        public override string ToString()
        {
            return string.Format("Name:{0}\nAge:{1}", name, age);
        }
    }
    class HttpGetPost
    {
        //#region Get请求 
        public static string Get(string Url)
        {
            //System.GC.Collect();
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
            request.Proxy = null;
            request.KeepAlive = false;
            request.Method = "GET";
            request.ContentType = "application/json; charset=UTF-8";
            request.AutomaticDecompression = DecompressionMethods.GZip;

            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream myResponseStream = response.GetResponseStream();
            StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8);
            string retString = myStreamReader.ReadToEnd();


            myStreamReader.Close();
            myResponseStream.Close();

            if (response != null)
            {
                response.Close();
            }
            if (request != null)
            {
                request.Abort();
            }

            return retString;
        }
        //#endregion

        // pose请求
        public static string Post(string Url, string Data, string Referer)
        {
            //创建一个HTTP请求
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
            //Post请求方式 
            request.Method = "POST";
            request.Referer = Referer;
            byte[] bytes = Encoding.UTF8.GetBytes(Data);

            //内容类型
            request.ContentType = "application/x-www-form-urlencoded";
            request.ContentLength = bytes.Length;
            Stream myResponseStream = request.GetRequestStream();
            myResponseStream.Write(bytes, 0, bytes.Length);

            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            StreamReader myStreamReader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
            string retString = myStreamReader.ReadToEnd();


            myStreamReader.Close();
            myResponseStream.Close();

            if (response != null)
            {
                response.Close();
            }
            if (request != null)
            {
                request.Abort();
            }
            return retString;
        }
    }

    // 此类作用: 序列化 与 反序列化 json格式的数据,进行打包发送和接收解析
    class JsonSendReceive
    {
        // 创建类
        JavaScriptSerializer ser = new JavaScriptSerializer();

        // json序列化 用于发送
        // 将函数的形参类型修改为你需要的类型
        public string json_send(person p1)
        {
            // 序列化 json格式
            string outputJSON = ser.Serialize(p1);

             使用IO进行写入 json格式 的文件   保存本地
            //File.WriteAllText("Output.json", outputJSON);

            return outputJSON;
        }
        // json序列化 用于接收
        // 输入git到的 json字符串内容 进行反序列化解析为类
        // 将函数的返回类型修改为你需要的类型
        public person json_receive(string p1)
        {

             读取本地 json 文件
            //String p1 = File.ReadAllText("JSON.json");

            // 实例化 将封装类进行解析 反序列化
            person p = ser.Deserialize<person>(p1);

            return p;
        }
    }
    class Program
    {
       
        static void Main(string[] args)
        {

             post发送

             实例化 一个封装类
            //person p1 = new person() { name = "Ben", age = 67 };
             实例化 json 处理的类
            //JsonSendReceive json_p1 = new JsonSendReceive();
             json 格式 序列化
            //string data = json_p1.json_send(p1);

            // post 必要参数
            string url1 = "http://127.0.0.1:8888";
            string str_head = "";

             不带参数: 直接字符串就可以
            //string data1 = "123";
            // 带参数需要自己拼接字符串
            // 例如: 参数1:s1  参数2:s2  中间用&间隔  使用 =
            string data1 = "s1=" + "s1的内容" + "&s2=" + "s2的内容";

            // 发送
            string data_ = HttpGetPost.Post(url1, data1, str_head);


            // git 必要参数
            string url = "http://www.kuaidi100.com/query?type=shunfeng&postid=367847964498";

            // 发送
            string data = HttpGetPost.Get(url);

            // git接收

             实例化 json 处理的类
            //JsonSendReceive json_p1 = new JsonSendReceive();
             json 格式 反序列化
            //person data_ = json_p1.json_receive(data);

            Console.WriteLine(data);
            Console.ReadKey();
        }
    }
}



参考文章:https://www.cnblogs.com/zoujinhua/p/10330084.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

默执_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值