• C#作为客户端http通讯


    1.添加http通讯工具类 HttpHelper

    public enum HttpVerb
        {
            Get,
            Post
        }
    
        public class HttpHelper
        {
            //private string _contentType = "raw";
            //private string _contentType = "application/x-www-form-urlencoded";
            private string _contentType = "application/json";
            //private string _contentType = "text/xml";
            private int _timeout = 15000;
    
            public string EndPoint { get; set; }
            public HttpVerb Method { get; set; }
            public string ContentType { get { return _contentType; } set { _contentType = value; } }
            public string PostData { get; set; }
    
            /// 
            /// 默认15000毫秒
            /// 
            public int Timeout { get { return _timeout; } set { _timeout = value; } }
    
            public HttpHelper(string endpoint)
            {
                EndPoint = endpoint;
                Method = HttpVerb.Get;
                ContentType = _contentType;
                PostData = "{}";
            }
    
            public string Post(string data)
            {
                var service = new Uri(EndPoint);
                var request = WebRequest.CreateHttp(service);
                request.Method = "POST";
                request.Timeout = Timeout;
                request.KeepAlive = true;
                request.ContentLength = 0;
                request.ContentType = ContentType;
                request.Accept = "application/json";
    
                var bytes = Encoding.UTF8.GetBytes(data);
                request.ContentLength = bytes.Length;
                using (var writeStream = request.GetRequestStream())
                {
                    writeStream.Write(bytes, 0, bytes.Length);
                }
    
                using (var response = (HttpWebResponse)request.GetResponse())
                {
                    var responseValue = string.Empty;
                    if (response.StatusCode != HttpStatusCode.OK)
                    {
                        var message = String.Format(CultureInfo.CurrentCulture, "Request failed. Received HTTP {0}", response.StatusCode);
                        throw new WebException(message);
                    }
                    using (var responseStream = response.GetResponseStream())
                    {
                        if (responseStream != null)
                            using (var reader = new StreamReader(responseStream))
                            {
                                responseValue = reader.ReadToEnd();
                            }
                    }
                    return responseValue;
                }
            }
    
            /// 
            /// Request server
            /// 
            /// http通讯参数
            /// 
            public string Get(string parameters)
            {
                var service = new Uri(EndPoint + parameters);
                var request = WebRequest.CreateHttp(service);
                request.Method = "GET";
                request.Timeout = Timeout;
                request.KeepAlive = true;
                request.ContentLength = 0;
                request.ContentType = ContentType;
    
                using (var response = (HttpWebResponse)request.GetResponse())
                {
                    var responseValue = string.Empty;
                    if (response.StatusCode != HttpStatusCode.OK)
                    {
                        var message = String.Format(CultureInfo.CurrentCulture, "Request failed. Received HTTP {0}", response.StatusCode);
                        throw new WebException(message);
                    }
                    using (var responseStream = response.GetResponseStream())
                    {
                        if (responseStream != null)
                            using (var reader = new StreamReader(responseStream))
                            {
                                responseValue = reader.ReadToEnd();
                            }
                    }
                    return responseValue;
                }
            }
    
            /// 
            /// 下载更新二进制文件
            /// 
            /// http通讯参数
            /// 
            public byte[] DownLoad(string parameters)
            {
                var service = new Uri(EndPoint + parameters);
                var request = WebRequest.CreateHttp(service);
                request.Timeout = Timeout;
                request.KeepAlive = true;
                request.Method = Method.ToString().ToUpper(CultureInfo.CurrentCulture);
                request.ContentLength = 0;
                request.ContentType = ContentType;
    
                if (Method == HttpVerb.Post)
                {
                    var bytes = Encoding.UTF8.GetBytes(PostData);
                    request.ContentLength = bytes.Length;
    
                    using (var writeStream = request.GetRequestStream())
                    {
                        writeStream.Write(bytes, 0, bytes.Length);
                    }
                }
    
                using (var response = (HttpWebResponse)request.GetResponse())
                {
                    if (response.StatusCode != HttpStatusCode.OK)
                    {
                        var message = String.Format(CultureInfo.CurrentCulture, "Request failed. Received HTTP {0}", response.StatusCode);
                        throw new WebException(message);
                    }
                    using (var result = new MemoryStream())
                    {
                        const int bufferLen = 2048;
                        var buffer = new byte[bufferLen];
                        using (var responseStream = response.GetResponseStream())
                        {
                            if (responseStream != null)
                            {
                                var len = responseStream.Read(buffer, 0, bufferLen);
                                while (len > 0)
                                {
                                    result.Write(buffer, 0, len);
                                    len = responseStream.Read(buffer, 0, bufferLen);
                                }
                            }
                        }
                        return result.ToArray();
                    }
                }
            }
    
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160

    2.调用HttpHelper工具类

    //使用GET请求服务器
     HttpHelper hh = new HttpHelper("http://localhost:8080/Server/register");
     String response = hh.Get("?" + "name=admin&pass=123");
     Console.WriteLine(response);
     //解析返回数值
    //JObject joResponse = (JObject)JsonConvert.DeserializeObject(response);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    //使用POST请求服务器视频
    HttpHelper hh = new HttpHelper("http://localhost:8080/Server/register");
    Console.WriteLine("======================");
    JObject obj = new JObject();
    obj.Add("name", "admin");
    obj.Add("pass", "123");
    String response = hh.Post(obj.ToString());
    Console.WriteLine(response);
    //解析返回数值
    //JObject joResponse = (JObject)JsonConvert.DeserializeObject(response);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    3.如果使用Json解析,需要在项目中添加json依赖包

  • 相关阅读:
    revit\navisworks各种安装问题
    Tabby Terminal 下载和安装,快速上手使用教程
    国产化正在成为超融合市场的重要发展方向之一
    文章投稿经历
    「Verilog学习笔记」求两个数的差值
    【Android笔记03】Android基本的UI控件(TextView、Button、EditText、ImageView、ProgressBar)
    如何将报告从 JasperReports 导入到 FastReport .NET?
    [C#]JCoder.Mock4Net,可用于模拟数据的c#类库
    通俗理解ABP中的模块Module
    从零开始上手 MQTT over QUIC:快速体验下一代物联网标准协议
  • 原文地址:https://blog.csdn.net/zcn596785154/article/details/126781329