【C#网络基础】C# get post请求

using KTCommon.Helper;
using KTCommon.LOG;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;

namespace KTCommon.HTTP
{
    public class KTHttpRequest
    {
        #region GET请求

        /// <summary>
        /// GET请求
        /// </summary>
        /// <param name="nUrl"></param>
        /// <param name="nCacheSecond"></param>
        /// <returns></returns>
        public static string _Get(string nUrl, int nCacheSecond = 0)
        {
            try
            {
                string cacheKey = "";
                TraceLog.m_Trace.Trace("_Get Request Url=" + nUrl);

                if (nCacheSecond > 0)
                {
                    if (nUrl.Contains("&signature="))
                    {
                        string temp = nUrl.Substring(0, nUrl.IndexOf("&signature="));
                        cacheKey = MyMD5Helper.GetMD532(temp).ToUpper();
                    }
                    else
                    {
                        cacheKey = MyMD5Helper.GetMD532(nUrl).ToUpper();
                    }

                    var cache = CacheHelper.Get(cacheKey);
                    if (null != cache)
                    {
                        TraceLog.m_Trace.Trace(cacheKey + " read cache...");
                        return cache as string;
                    }
                }

                string htmltext = "";
                HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(nUrl);

                // 头信息
                myRequest.Headers.Add("Cache-Control", "no-cache");
                myRequest.Method = "GET";

                myRequest.ContentType = "text/plain";
                // 发送的数据信息
                myRequest.Timeout = 15 * 1000;

                HttpWebResponse response = (HttpWebResponse)myRequest.GetResponse();
                Stream responseStream = response.GetResponseStream();
                StreamReader sr = new StreamReader(responseStream, Encoding.GetEncoding("utf-8"));
                htmltext = sr.ReadToEnd();
                sr.Close();
                sr.Dispose();
                responseStream.Close();
                TraceLog.m_Trace.Trace("_Get htmltext=" + htmltext);

                if (nCacheSecond > 0 && htmltext.StartsWith("{\"code\":0,"))
                {
                    TraceLog.m_Trace.Trace(cacheKey + " wrrite cache...");
                    CacheHelper.Insert(cacheKey, htmltext, nCacheSecond);
                }

                return htmltext;
            }
            catch (Exception ex)
            {
                TraceLog.m_Trace.Trace("_Get Exception=" + ex);
                return "";
            }

        }

        #endregion

        #region POST请求

        /// <summary>
        /// POST请求
        /// </summary>
        /// <param name="nUrl"></param>
        /// <param name="nMethodName"></param>
        /// <param name="nPostData"></param>
        /// <returns></returns>
        public static string _Post(string nUrl, string nMethodName, object nPostData, bool IsCache = false)
        {
#if DEBUG
            //urlAddress = "http://localhost/airwaykeeper/v1/API/API2WShare.aspx";
            //strMethodName = "_GetShareInfoByUID";
            //strRequest = File.ReadAllText("d:\\request.txt", Encoding.UTF8);
#endif
            string htmltext = "";
            string cacheKey = "";
            Byte[] bSend = null;
            try
            {
                string postData = Newtonsoft.Json.JsonConvert.SerializeObject(nPostData);
                TraceLog.m_Trace.Trace(nMethodName + " RequestUrl=" + nUrl);
                TraceLog.m_Trace.Trace(nMethodName + " PostData=" + postData);

                //缓存
                if (IsCache)
                {
                    cacheKey = nMethodName + "-" + MyMD5Helper.GetMD532(nUrl + nMethodName + postData).ToUpper();
                    var cache = CacheHelper.Get(cacheKey);
                    if (null != cache)
                    {
                        TraceLog.m_Trace.Trace(cacheKey + " read cache...");
                        return cache as string;
                    }
                }

                HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(nUrl);

                // 头信息
                myRequest.Headers.Add("Cache-Control", "no-cache");
                myRequest.Headers.Add("MethodName", nMethodName);
                myRequest.Method = "POST";

                myRequest.ContentType = "application/json";
                // 发送的数据信息
                bSend = Encoding.UTF8.GetBytes(postData);
                myRequest.ContentLength = bSend.Length;
                myRequest.Timeout = 60 * 1000;

                // 发送数据
                Stream newStream = myRequest.GetRequestStream();
                newStream.Write(bSend, 0, bSend.Length);
                newStream.Close();

                HttpWebResponse response = (HttpWebResponse)myRequest.GetResponse();
                Stream responseStream = response.GetResponseStream();
                StreamReader sr = new StreamReader(responseStream, Encoding.GetEncoding("utf-8"));
                htmltext = sr.ReadToEnd();
                sr.Close();
                sr.Dispose();
                responseStream.Close();
            }
            catch (Exception ex)
            {
                TraceLog.m_Trace.Trace(nMethodName + " Exception=" + ex.ToString());
                return new BaseResponse(ex.Message).ToString();
            }
            TraceLog.m_Trace.Trace(nMethodName + " ResponseJson=" + htmltext);

            //缓存
            if (IsCache)
            {
                if (htmltext.Contains("IsSuccess\":true,"))
                {
                    TraceLog.m_Trace.Trace(cacheKey + " wrrite cache...");
                    CacheHelper.Max(cacheKey, htmltext);
                }
            }

            return htmltext;
        }

        #endregion
    }

    public class BaseResponse
    {
        public BaseResponse(string tmp)
        {

        }

        public override string ToString()
        {
            return "";
        }
    }
}
时间: 2024-10-07 05:06:56

【C#网络基础】C# get post请求的相关文章

网络基础

3.1 网络基础 001 问题:为什么要学习网络编程? 回答:(1)网络编程是一种实时更新应用数据的常用手段 (2)网络编程是开发优秀网络应用的前提和基础 002 网络基本概念 2-1 客户端(就是手机或者ipad等手持设备上面的APP) 2-2 服务器(远程服务器-本地服务器) 2-3 请求(客户端索要数据的方式) 2-4 响应(需要客户端解析数据) 2-5 数据库(服务器的数据从哪里来) 3.2 Http 001 URL 1-1 如何找到服务器(通过一个唯一的URL) 1-2 URL介绍 a

网络处理1-异步GET请求

本文目录 前言 一.API简介 二.发送异步的GET请求 前言 云计算 近几年来,云计算是一个非常热门的技术名词,很多专家认为,云计算会改变互联网的技术基础,甚至会影响整个产业的格局.可能还很多人不了解什么是云计算,简单来说,就是把用户的数据(比如文档.照片等).用户需要使用的软件.用户需要搜索的资源都保存在"云端",并不用保存在用户本地.你可以将"云端"看做了一台超级计算机,其实是由无数台大型服务器组成的. 移动应用 现在很多的移动应用也类似于"云计算&

【网络基础】ICMP报文和ping指令

ICMP报文: 作用: 为了更有效转发IP数据报和提高 IP 数据报交付成功的机会, 在网际层使用了网际控制报文协议 ICMP (Internet Control Message Protocol). 概念: ICMP 不是高层协议,而是 IP 层的协议.ICMP 报文作为 IP 层数据报的数据,加上数据报的首部,组成 IP 数据报发送. 格式: 种类(对应ICMP报文内的类型字段): ICMP 报文的种类有两种,即 ICMP 差错报告报文和 ICMP 询问报文. ICMP差错报告报文共有五种:

网络基础知识查询

第一章.基础网络概念 1.1 网络是个什么玩意儿 全世界的人种有很多,人类使用的语言种类也多的很.那如果你想要跟外国人沟通时,除了比手划脚之外,你要如何跟对方讲话? 大概只有两种方式啰,一种是强迫他学中文,一种则是我们学他的语言,这样才能沟通啊.在目前世界上的强势语言还是属于英语系国家, 所以啰,不管是啥人种,只要学好英文,那么大家都讲英文,彼此就能够沟通了.希望不久的未来,咱们的中文能够成为强势语言啊! 这个观念延伸到网络上面也是行的通的,全世界的操作系统多的很,不是只有 Windows/Li

网络基础知识、ASP.NET 核心知识(1)*

为什么要写网络? 我原本的计划是这样的,连续两天梳理ASP.NET开发的核心知识.说到这呢,有人问了.“不是说好了做ASP.NET笔记吗?为啥要写网络基础知识?是不是傻?” 原因是这样的.作为网站开发人员,你所开发的软件产品最终是要在网络上运行的.这就像一个生产商,要生产供给东北地区的产品,而生产商对东北的天气.地理.人文毫无了解.生产商的产品肯定是不可用的,或者低端的!产品质量不好,那是自然的.产品质量好,那算你点儿高.那么作为ASP.NET开发人员,如果一点不懂http协议.不晓得Ajax.

Python服务器开发二:Python网络基础

Python服务器开发二:Python网络基础 网络由下往上分为物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. HTTP是高层协议,而TCP/IP是个协议集,包过许多的子协议.包括:传输层的 FTP,UDP,TCP协议等,网络层的ip协议等,高层协议如HTTP,telnet协议等,HTTP是TCP/IP的一个子协议. socket是对TCP/IP协议的封装和应用(程序员层面上).也可以说,TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如

运维网络基础

对于系统运维人员,CCNA的学习难度不是很大,而且学习的周期较短,对于快速成为一个系统运维工程师中,网络搞的最好的,就足够了.如果时间精力有限,建议学习一下知识,作为步入网络知识的基石. 网络基础知识: n 涉及到网络的发展历程,网络的一些名词概念,路由,交换介绍 n OSI七层模型的介绍 n TCP/IP协议簇的简介,包含TCP/IP三次握手和四次挥手的过程 n VLSM可变长子网的概念 第1章 初识网络 网络的知识体系是一个庞大的体系,涉及到路由交换.安全.无线.语言.数据中心等多个方面,所

操作系统和网络基础的整理

操作系统 为何要有操作系统: 计算机系统非常庞大难懂,程序员写程序时需要搞懂计算机系统,效率很低. 操作系统的出现缓解了程序员的大部分工作,操作系统管理及优化计算机硬件,程序员不需要全部搞懂计算机系统就可写代码编写软件. 软件在操作系统的基础上运行,间接使用硬件. 操作系统的位置: 操作系统位于计算机硬件及应用程序之间,协调.管理和控制计算机硬件和软件系统的一个程序. 操作系统的功能: 操作系统协调.管理和控制计算机硬件和软件的一个软件. 操作系统的功能由操作系统运行内核态管理硬件和操作系统运行

鸟哥的私房菜的网络基础篇,好久没看了,重新看了一下子网划分简单很多

第二章.基础网络概念 目录 第二章.基础网络概念 1 2.1 网络是个什么玩意儿 2 2.1.1 什么是网络 2 2.1.2 计算机网络组成组件 5 2.1.3 计算机网络区域范围 6 2.1.4 计算机网络协议: OSI 七层协定 7 2.1.5 计算机网络协议: TCP/IP 11 2.2 TCP/IP 的链结层相关协议 12 2.2.1 广域网使用的设备 13 2.2.2 局域网络使用的设备-以太网络 14 2.2.3 以太网络的传输协议:CSMA/CD 16 2.2.4 MAC 的封装格

python 网络基础

服务器客户端模式,服务器存在唯一目的是:等待客户的请求, 一.套接字 unix套接字,AF_LOCAL,地址家族,缩写:AF,AF_LOCAL将代替AF_UNIX,很多时候两者等价 基于网络的套接字,AF_INET,AF_INET6 AF_NETLINK,无连接 python只支持AF_UNIX,AF_NETLINK,AF_INET家族 一种面向连接的:tcp协议,SOCK_STREAM 一种面向无连接的:udp协议,SOCK_DGRAM socket创建套接字,语法如下: socket(soc