当前位置:首页 > 服务端 > WPF HTTP请求(GET,POST)

WPF HTTP请求(GET,POST)

2022年11月09日 11:15:36服务端6

WPF HTTP请求(GET,POST)

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Threading.Tasks;

namespace Nova.NovaiCloud.NovaiCloudCareHelper.Common
{
    public class HttpRequestHelper
    {
        public static string HttpPost(string Url, string postDataStr,ref bool isSuccess)
        {
            try
            {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
                request.Method = "POST";
                request.ContentType = "application/json";
                request.ContentLength = Encoding.UTF8.GetByteCount(postDataStr);
                //request.CookieContainer = cookie;
                Stream myRequestStream = request.GetRequestStream();
                StreamWriter myStreamWriter = new StreamWriter(myRequestStream, Encoding.GetEncoding("gb2312"));
                myStreamWriter.Write(postDataStr);
                myStreamWriter.Close();

                HttpWebResponse response = (HttpWebResponse)request.GetResponse();

                //response.Cookies = cookie.GetCookies(response.ResponseUri);
                Stream myResponseStream = response.GetResponseStream();
                StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
                string retString = myStreamReader.ReadToEnd();
                myStreamReader.Close();
                myResponseStream.Close();

                return retString;
            }
            catch (Exception e)
            {
                isSuccess = false;
                Console.Write(e.Message);
                return e.Message;
            }
        }

        public string HttpGet(string Url, string postDataStr)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url + (postDataStr == "" ? "" : "?") + postDataStr);
            request.Method = "GET";
            request.ContentType = "application/json";

            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream myResponseStream = response.GetResponseStream();
            StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
            string retString = myStreamReader.ReadToEnd();
            myStreamReader.Close();
            myResponseStream.Close();

            return retString;
        }

        /// <summary>  
        /// 创建GET方式的HTTP请求  
        /// </summary>  
        //public static HttpWebResponse CreateGetHttpResponse(string url, int timeout, string userAgent, CookieCollection cookies)
        public static HttpWebResponse CreateGetHttpResponse(string url)
        {
            HttpWebRequest request = null;
            if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))
            {
                //对服务端证书进行有效性校验(非第三方权威机构颁发的证书,如自己生成的,不进行验证,这里返回true)
                ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
                request = WebRequest.Create(url) as HttpWebRequest;
                request.ProtocolVersion = HttpVersion.Version10;    //http版本,默认是1.1,这里设置为1.0
            }
            else
            {
                request = WebRequest.Create(url) as HttpWebRequest;
            }
            request.Method = "GET";

            //设置代理UserAgent和超时
            //request.UserAgent = userAgent;
            //request.Timeout = timeout;
            //if (cookies != null)
            //{
            //    request.CookieContainer = new CookieContainer();
            //    request.CookieContainer.Add(cookies);
            //}
            return request.GetResponse() as HttpWebResponse;
        }

        /// <summary>  
        /// 创建POST方式的HTTP请求  
        /// </summary>  
        //public static HttpWebResponse CreatePostHttpResponse(string url, IDictionary<string, string> parameters, int timeout, string userAgent, CookieCollection cookies)
        public static HttpWebResponse CreatePostHttpResponse(string url, IDictionary<string, string> parameters)
        {
            HttpWebRequest request = null;
            //如果是发送HTTPS请求  
            if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))
            {
                //ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
                request = WebRequest.Create(url) as HttpWebRequest;
                //request.ProtocolVersion = HttpVersion.Version10;
            }
            else
            {
                request = WebRequest.Create(url) as HttpWebRequest;
            }
            request.Method = "POST";
            request.ContentType = "application/json";

            //设置代理UserAgent和超时
            //request.UserAgent = userAgent;
            //request.Timeout = timeout; 

            //if (cookies != null)
            //{
            //    request.CookieContainer = new CookieContainer();
            //    request.CookieContainer.Add(cookies);
            //}
            //发送POST数据  
            if (!(parameters == null || parameters.Count == 0))
            {
                StringBuilder buffer = new StringBuilder();
                int i = 0;
                foreach (string key in parameters.Keys)
                {
                    if (i > 0)
                    {
                        buffer.AppendFormat("&{0}={1}", key, parameters[key]);
                    }
                    else
                    {
                        buffer.AppendFormat("{0}={1}", key, parameters[key]);
                        i++;
                    }
                }
                byte[] data = Encoding.ASCII.GetBytes(buffer.ToString());
                using (Stream stream = request.GetRequestStream())
                {
                    stream.Write(data, 0, data.Length);
                }
            }
            string[] values = request.Headers.GetValues("Content-Type");
            return request.GetResponse() as HttpWebResponse;
        }

        /// <summary>
        /// 获取请求的数据
        /// </summary>
        public static string GetResponseString(HttpWebResponse webresponse)
        {
            using (Stream s = webresponse.GetResponseStream())
            {
                StreamReader reader = new StreamReader(s, Encoding.UTF8);
                return reader.ReadToEnd();

            }
        }

        /// <summary>
        /// 验证证书
        /// </summary>
        private static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
        {
            if (errors == SslPolicyErrors.None)
                return true;
            return false;
        }
    }
}

  

作者:风来风往风伤(TiAmo)
来源链接:https://www.cnblogs.com/amwuau/p/7567656.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/server/68768.html

标签: HTTP
分享给朋友:

“WPF HTTP请求(GET,POST)” 的相关文章

对称与非对称加密;SSL;HTTPS;AJP

1.对称加密就是加密与解密的时候都是用一个密码 2.非对称加密,有一对密码A,B;用A加密就得用B解密,相对的用B加密就得用A解密 3.公钥与私钥,这一对密码,随便拿一个公布出去,那个就是公钥,剩下一个是私钥。 4.应用1:我想给一个人发信息,我就去拿他公布出来的公钥...

git clone使用https

git clone使用https

git默认开启SSL验证, 如果直接使用git clone https://xxx, 会返回SSL certificate problem: unable to get local issuer certificate, 需要把SSL验证关闭,...

Android网络请求获取不到数据,retrofit2.HttpException: HTTP 400

网络请求数据的时候,一直获取不到数据 try { val url = params.key ?: EStudyService.BOOK_URL ... } catch (e: Exception) {...

IDEA:http://fls.jetbrains-agent.com-- No response

起因: win10电脑关机,打开,自动更新了系统。 (误删除vmoptions的-javaagent 绿色 jar包,也会出现↓。。。) [ 2022年1月14日改vmoptions这玩意又替换的别人后而忘了加 -javaagent:D:\idea\je...

http协议中cookie和session的区别

http协议中cookie和session的区别

1、 当客户端访问一个支持cookie的网站的时候,用户就会提供包括用户名在内的个人信息,把它提交到服务器,接着服务器在向客户端回传相应的超文本的同时,也会发回这些个人信息。当然,这些信息并不是存放在reponsebody里面,而是在response header里...

了解http请求,常见的几种方式

了解http请求,常见的几种方式

在说http的几种方式前,什么是http呢? HTTP是一个基于TCP/IP通信协议来传递数据,包括html文件、图像、结果等,即是一个客户端和服务器端请求和应答的标准。 http有什么特点: 1.http无连接:限制每次连接只处理一个...

前端一次同时发送多个http请求,模拟后端并发

前端一次同时发送多个http请求,模拟后端并发

前端可以做并发吗 答案是:理论上可以,实际操作可能会有点差强人意。javascript没有多线程这样一个说法,其次,不建议使用这种方式解决问题,多线程应该交给后台去做 首先我们会想到第一个很实际的方式采用 setInterval(function)...

Java处理HTTP请求超时问题

分享知识 传递快乐   在发送POST或GET请求时,返回超时异常处理办法: 捕获 SocketTimeoutException | ConnectTimeoutException | ConnectionPoolTimeout 异常 以上三种异...

java如何设置http请求头、请求头作用、idea测试请求等

java如何设置http请求头、请求头作用、idea测试请求等

本文涉及两种请求方式,即 get 和 post 。通过java后台设置请求头部 可以根据需求修改或者添加请求头信息。 修改请求头代码 根据不同的请求方式,在main方法中选择调用不同的方法(get/post ) package com....

HTTP请求流程(超级详细)

HTTP请求流程(超级详细)

HTTP请求流程 文章目录 HTTP请求流程 一、浏览器根据域名解析IP地址 二、浏览器与WEB服务器建立一个TCP连接 三、浏览器给WEB服务器发送一个...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。