C# HttpWebRequest 异步请求
2016-10-28 14:21
316 查看
同事古X强帮忙实现的一个功能,记录下来,方便以后查阅
异步请求:
HttpWebRequest请求:
异步请求:
//定义委托 public delegate void Asyncdelegate(WebProxy objName); //异步调用完成时,执行回调方法 private void CallbackMethod(IAsyncResult ar) { Asyncdelegate dlgt = (Asyncdelegate)ar.AsyncState; dlgt.EndInvoke(ar); } //异步调用Commit方法 public virtual void Run() { Asyncdelegate isgt = new Asyncdelegate(Commit); IAsyncResult ar = isgt.BeginInvoke(null,new AsyncCallback(CallbackMethod),isgt); }
HttpWebRequest请求:
//向APM接口提交数据 //为什么要用WebProxy,因为.Net 4.0以下没有Host属性,无法设置标头来做DNS重连 public virtual void Commit(WebProxy objName = null) { string ret = string.Empty; string ip = string.Empty; try { HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.baidu.com"); request.Method = "POST";// request.Timeout = 30000; request.ContentType = "application/x-www-form-urlencoded"; request.ServicePoint.Expect100Continue = false; if(objName != null) { request.Proxy = objName; } byte[] byteArray = Encoding.UTF8.GetBytes("&a=要发送的数据&b=要发送的数据"); request.ContentLength = byteArray.Length; Stream dataStream = request.GetRequestStream(); dataStream.Write(byteArray,0,byteArray.Length); dataStream.Close(); WebResponse response = request.GetResponse(); dataStream = request.GetResponseStream(); StreamReader reader = new StreamReader(dataStream); string responseFromServer = reader.ReadToEnd(); reader.Close(); dataStream.Close(); response.Close(); } catch(WebException ex) { Debug.Error("提交Apm日志失败:"+ex.Status.ToString()); if(ex.Status.ToString().Equals("NameResolutionFailure"))//域名解释错误,重连一次,重新获取域名ip,用ip来拼接提交 { ip = this.DnRetryGet("域名"); if(ip.Equals("0")) { return } WebProxy proxy = new WebProxy(ip,80); this.Commit(proxy); } } if(ret.Equals("1")) { Debug.Log("提交Apm日志成功"); } else { Debug.Log("提交Apm日志失败:"+ret); } public virtual string DnsRetryGet(string doMain) { }
相关文章推荐
- 在C#用HttpWebRequest中发送GET/HTTP/HTTPS请求
- 在C#用HttpWebRequest中发送GET/HTTP/HTTPS请求
- C#实现通过HttpWebRequest发送POST请求实现网站自动登陆
- [C#]使用HttpWebRequest请求远端服务器时如何加载SSL证书
- C#实现通过HttpWebRequest发送POST请求实现网站自动登陆
- C#POST数据,HttpWebRequest请求页面,HttpWebResponse返回数据
- 在C#用HttpWebRequest中发送GET/HTTP/HTTPS请求
- 在C#用HttpWebRequest中发送GET/HTTP/HTTPS请求
- C#实现通过HttpWebRequest发送POST请求实现网站自动登陆
- 在C#用HttpWebRequest中发送GET/HTTP/HTTPS请求
- C# : WebRequest发起Http Post请求模拟登陆并cookie处理示例
- C#使用HttpWebRequest进行HTTP请求发送和接收的一些小结。(新增修复.NET4.0以下关于cookie的bug)
- 【转】C# WebRequest发起Http Post请求模拟登陆并cookie处理示例
- [导入]C#实现通过HttpWebRequest发送POST请求实现网站自动登陆
- c#通过webrequest请求远程http服务时出现的问题
- c#中HttpWebRequest使用Proxy实现指定IP的域名请求
- C#实现通过HttpWebRequest发送POST请求实现网站自动登陆
- [C#]使用HttpWebRequest请求远端服务器时如何加载SSL证书
- 掌握 Ajax,第 2 部分: 使用 JavaScript 和 Ajax 发出异步请求 在 Web 请求中使用 XMLHttpRequest
- C#的HttpWebRequest编程,支持带ViewState的网页POST请求