博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#request 请求响应
阅读量:4455 次
发布时间:2019-06-07

本文共 7896 字,大约阅读时间需要 26 分钟。

///         /// 提交POST请求        ///         /// 提交地址        /// 提交的数据        /// 发送时使用的编码格式        /// 接收时使用的编码格式        /// 超时时间        /// 是否签名        /// 是否为登录,如果是登录通过post提交数据需要的+进行替换        /// 
private static CResponseResult HttpPostResult(String url, String postData, Encoding sendEncode, Encoding receiveEncode, int timeout = 0, bool signFlag = false,bool caLogin=false) { using (new CWaitCursor()) { //连接网站是否出错 bool isConnErr = false; //返回结果 CResponseResult result = new CResponseResult(); //创建Http请求 HttpWebRequest request; try { byte[] postBytes = null; if (caLogin) { postBytes = sendEncode.GetBytes(postData.Replace("+", "%2B")); } else { postBytes = sendEncode.GetBytes(postData); } //设置用于验证服务器证书的回调 ServicePointManager.ServerCertificateValidationCallback = ValidateServerCertificate; //创建Http请求 //如果是发送HTTPS请求 if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase)) { ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(ValidateServerCertificate); request = WebRequest.Create(url) as HttpWebRequest; request.ProtocolVersion = HttpVersion.Version10; } else request = (HttpWebRequest)WebRequest.Create(new Uri(url)); //超时 if (timeout > 0) { //此处是毫秒为单位,不能随便转成以秒单位 request.Timeout = timeout; if (request.ReadWriteTimeout < request.Timeout) request.ReadWriteTimeout = request.Timeout; } request.CookieContainer = GetCookie(url); request.Headers.Set("Cache-Control", "no-cache"); request.Headers.Set("Pragma", "no-cache"); request.Headers.Set("FRAME_SSO_TICKET", LscSSOTicket.Replace("\r","").Replace("\n","")); request.Method = "POST"; if (signFlag) { if (Encoding.Default.GetBytes(postData).Length > limitSize * 1024) { string compressDataString = BZipUtil.compressTobase64(BZipUtil.compress(postData)); postBytes = sendEncode.GetBytes(compressDataString); request.ContentType = "application/zip-compress-ca-encrypted-data"; } else { request.ContentType = "application/ca-encrypted-data"; } } else { if (Encoding.Default.GetBytes(postData).Length > limitSize * 1024) { string compressDataString = BZipUtil.compressTobase64(BZipUtil.compress(postData)); postBytes = sendEncode.GetBytes(compressDataString); request.ContentType = "application/zip-compress-data"; } else { request.ContentType = "application/x-www-form-urlencoded"; } } request.ContentLength = postBytes.Length; //发起Http请求 //设置代理 ProxySetting(request); //用于发送数据的 Stream 对象 Stream requestStream = request.GetRequestStream(); requestStream.Write(postBytes, 0, postBytes.Length); requestStream.Close(); //if (currBaseCookie == null) //{ // currBaseCookie = new CookieContainer(); //request.CookieContainer = GetCookie(url); //} } catch (Exception ex) { isConnErr = true; result.Code = "1"; result.Message = ex.Message; //出现异常,统一抛出HttpPostException throw new HttpPostException(ex); } //Http响应 if (!isConnErr) { try { HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Encoding jspEncode = GetJspEncode(response.GetResponseHeader("Content-Type")); string contentType = response.ContentType; StreamReader reader = new StreamReader(response.GetResponseStream(), jspEncode == null ? receiveEncode : jspEncode); if (contentType.Contains("application/zip-compress-data;")) { //返回内容 result.Message = BZipUtil.decompress(BZipUtil.base64Tocompress(reader.ReadToEnd().Trim())); } else { result.Message = reader.ReadToEnd().Trim(); } result.Code = "0"; //关闭连接 reader.Close(); response.Close(); } catch (WebException ex) { HttpWebResponse res = ex.Response as HttpWebResponse; if (res != null) { if (res.StatusCode == HttpStatusCode.Forbidden) { Stream s = res.GetResponseStream(); Encoding jspEncode = GetJspEncode(res.GetResponseHeader("Content-Type")); string contentType = res.ContentType; StreamReader objReader = new StreamReader(s, receiveEncode); if (contentType.Contains("application/zip-compress-data;")) { //返回内容 result.Message = BZipUtil.decompress(BZipUtil.base64Tocompress(objReader.ReadToEnd().Trim())); } else { result.Message = objReader.ReadToEnd().Trim(); } objReader.Close(); objReader.Close(); result.Code = "403"; } else { result.Message = ex.Message; result.Code = ((int)(res.StatusCode)).ToString(); } return result; } throw new HttpPostException(ex); } catch (Exception ex) { result.Code = "2"; result.Message = ex.Message; throw new HttpPostException(ex); } } return result; } }
HttpWebRequest

 

转载于:https://www.cnblogs.com/weiweiboqi/p/5663764.html

你可能感兴趣的文章
十 、Python常用模块介绍
查看>>
Power Desginer系列00【转载】
查看>>
Clementine的源节点学习【转载】
查看>>
wpf鼠标捕获与控件交互——UIElement.CaptureMouse
查看>>
bugku 图穷匕见
查看>>
WOJ 46 完全背包
查看>>
spring框架学习笔记(十)
查看>>
排球计分程序(现场记分员)
查看>>
流媒体技术笔记(视频编码相关)
查看>>
神马16核的服务器你让我单线程跑ffmpeg
查看>>
block,inline,inline-block的区别
查看>>
html表单
查看>>
const关键字——读《嵌入式c语言进阶之道》整理
查看>>
libevent入门(1)
查看>>
CSS 样式显示为小手
查看>>
关联模型错误的蛋疼错误提示
查看>>
JS当心隐式的强制转换
查看>>
通过ros节点发布Twist Messages控制机器人--10
查看>>
STL--list
查看>>
maven 学习之路之二(1)
查看>>