首页 > 编程语言 >C#Post请求

C#Post请求

时间:2023-04-05 20:37:38浏览次数:44  
标签:请求 C# req reqStream result HttpWebRequest Post string

C# 发送Post请求(带参数)
此处内容传输都是用UTF-8编码

1.不带参数发送Post请求
/// <summary>
        /// 指定Post地址使用Get 方式获取全部字符串
        /// </summary>
        /// <param name="url">请求后台地址</param>
        /// <returns></returns>
        public static string Post(string url)
        {
            string result = "";
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
            req.Method = "POST";
            HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
            Stream stream = resp.GetResponseStream();
            //获取内容
            using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
            {
                result = reader.ReadToEnd();
            }
            return result;
        }
 

 2.带参数Post请求,指定键值对         
/// <summary>
    /// 指定Post地址使用Get 方式获取全部字符串
    /// </summary>
    /// <param name="url">请求后台地址</param>
    /// <returns></returns>
    public static string Post(string url,Dictionary<string,string> dic)
    {
        string result = "";
        HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
        req.Method = "POST";
        req.ContentType = "application/x-www-form-urlencoded";
        #region 添加Post 参数
        StringBuilder builder = new StringBuilder();
        int i = 0;
        foreach (var item in dic)
        {
            if (i > 0)
                builder.Append("&");
            builder.AppendFormat("{0}={1}", item.Key, item.Value);
            i++;
        }
        byte[] data = Encoding.UTF8.GetBytes(builder.ToString());
        req.ContentLength = data.Length;
        using (Stream reqStream = req.GetRequestStream())
        {
            reqStream.Write(data, 0, data.Length);
            reqStream.Close();
        }
        #endregion
        HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
        Stream stream = resp.GetResponseStream();
        //获取响应内容
        using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
        {
            result = reader.ReadToEnd();
        }
        return result;
    }

3.带参数的Post请求,指定发送字符串内容
/// <summary>
/// 指定Post地址使用Get 方式获取全部字符串
/// </summary>
/// <param name="url">请求后台地址</param>
/// <param name="content">Post提交数据内容(utf-8编码的)</param>
/// <returns></returns>
public static string Post(string url, string content)
{
    string result = "";
    HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
    req.Method = "POST";
    req.ContentType = "application/x-www-form-urlencoded";
  
    #region 添加Post 参数
    byte[] data = Encoding.UTF8.GetBytes(content);
    req.ContentLength = data.Length;
    using (Stream reqStream = req.GetRequestStream())
    {
        reqStream.Write(data, 0, data.Length);
        reqStream.Close();
    }
    #endregion
  
    HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
    Stream stream = resp.GetResponseStream();
    //获取响应内容
    using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
    {
        result = reader.ReadToEnd();
    }
    return result;
}
 转载方法:
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("http://fanyi.baidu.com/transcontent");
           Encoding encoding = Encoding.UTF8;
           string param = "ie=utf-8&source=txt&query=hello&t=1327829764203&token=8a7dcbacb3ed72cad9f3fb079809a127&from=auto&to=auto";
           //encoding.GetBytes(postData);
           byte[] bs = Encoding.ASCII.GetBytes(param);
           string responseData = String.Empty;           
           req.Method = "POST";
           req.ContentType = "application/x-www-form-urlencoded";
           req.ContentLength = bs.Length;
           using (Stream reqStream = req.GetRequestStream())
           {
               reqStream.Write(bs, 0, bs.Length);
               reqStream.Close();
           }
           using (HttpWebResponse response = (HttpWebResponse)req.GetResponse())
           {
               using (StreamReader reader = new StreamReader(response.GetResponseStream(),encoding))
               {
                   responseData = reader.ReadToEnd().ToString();
               }
               context.Response.Write(responseData);
           }

 

 

来源:https://www.cnblogs.com/shiyh/p/11168797.html

标签:请求,C#,req,reqStream,result,HttpWebRequest,Post,string
From: https://www.cnblogs.com/ywtssydm/p/14980746.html

相关文章

  • Redis实践操作之—— keyspace notification(键空间通知)
    源码地址:https://github.com/Tinywan/PHP_Experience一、需求分析:设置了生存时间的Key,在过期时能不能有所提示?如果能对过期Key有个监听,如何对过期Key进行一个回调处理?如何使用Redis来实现定时任务?二、序言:    本文所说的定时任务或者说计划任务并不是很多人想象中的那样,比......
  • 被ST-Link【The content of ST-Link is corrupt】【Communication error with ST-Link
    直接跳转【4】看解决方法,祝大家都顺利解决【1】我的尝试   【2】我的错误情况【3】我无用的努力【尝试1:点击setting之后的第一个debug页面里面的port要改成sw,不然下载不成功】,其实这样只是比较节约端口而已,当然一般还是都选择【SW】  【尝试2:output里记得把crea......
  • WebSocket 实战之——【WebSocket 原理】
    一、WebSocket是什么?HTML5出的东西(协议),也就是说HTTP协议没有变化,或者说没关系,但HTTP是不支持持久连接的(长连接,循环连接的不算)。    首先HTTP有1.1和1.0之说,也就是所谓的keep-alive,把多个HTTP请求合并为一个,但是Websocket其实是一个新协议,跟HTTP协议基本没有关系,只是为了......
  • 设计模式(三十二)----综合应用-自定义Spring框架-自定义Spring IOC-自定义Spring IOC
    1自定义SpringIOC总结1.1使用到的设计模式工厂模式。这个使用工厂模式+配置文件的方式。单例模式。SpringIOC管理的bean对象都是单例的,此处的单例不是通过构造器进行单例的控制的,而是spring框架对每一个bean只创建了一个对象。模板方法模式。AbstractApplicationC......
  • 永久免费使用ChatGPT技巧
    ChatGPT简介可以帮助回答问题,提供建议和提示,可直接进行对话,以帮助解决困难和问题通过使用自然语言处理技术来了解问题,并使用机器学习算法来生成回答可以回答各种问题,包括科技,文化,历史,旅游,饮食等各种领域还可以学习和适应定制需求,以改进ChatGPT回答和建议无论是在寻找解决方......
  • Postman报文进行加密之AES
    Postman自带的加密函数是cryptoJS能够实现AES+Base64加密,还是用到Postman中的Pre-requestScript。Pre-requestScript是指在发送报文前执行的脚本,用于对请求包中的各种参数做一些个性化的处理。接上篇文章,实际获取的sText签名需要传递给源报文参数sign,报文内容如下signText,把......
  • C#各种语言HMAC SHA256实现
    语言包含:Javascript,PHP,Java,Groovy,C#,ObjectiveC,Go,Ruby,Python,Perl,Dart,Swift,Rust,Powershell。JavascriptHMACSHA256Runthecodeonlinewiththisjsfiddle.Dependentuponanopensourcejslibrarycalledhttp://code.google.com/p/crypto-js/.<sc......
  • libcurl第五课 Digest Authentication摘要验证使用
    场景在安迅士摄像机网页上,配置系统选项,HTTP/RTSPPasswordSettings中,选择Encryptedonly。获取设备的云台状态信息,使用的是摘要认证例子voidCAnXunShiConn::TestlibCurlHTTPDegistAuth(){CURL*pCurlHandle=curl_easy_init();curl_easy_setopt(pCurlHand......
  • PHP 文件加密Zend Guard Loader 学习和使用(如何安装ioncube扩展对PHP代码加密)
    一、大体流程图二、PHP项目文件加密 下表列出了Zend产品中的PHP版本及其内部API版本和Zend产品版本。如何加密请往后看三、如何使用第一步:确认当前环境AmaiPhalcon前,请确认您具备以下两个条件,如果您的环境不满足此条件,建议您对系统环境进行重新配置。条件1:PHP版本在5.5.X以上(......
  • 浅谈React与SolidJS对于JSX的应用
    React将JSX这一概念深入人心。但,并非只有React利用了JSX,VUE、SolidJS等JS库或者框架都使用了JSX这一概念。网上已经有大量关于JSX的概念与形式的讲述文章,不在本文的讨论范围。前言实际上,JSX并不是合法有效的JS代码或HTML代码。目前为止也没有任何一家浏览器的引擎实现了对JSX的......