1. /// <summary>
  2. /// Define other methods and classes here
  3. /// </summary>
  4. /// <param name="url"></param>
  5. /// <param name="contentType"></param>
  6. /// <returns></returns>
  7. public static Task<string> MakeAsyncRequest(string contentType, string contenttxt, string mobile)
  8. {
  9. string url = "http://www.dusystem.com/UserServiceAPI";
  10. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
  11. request.ContentType = contentType;
  12. request.Method = WebRequestMethods.Http.Post; //get
  13. request.Timeout = 20000;
  14. request.Proxy = null;
  15. byte[] data = System.Text.Encoding.GetEncoding("gbk").GetBytes("geovindu"); //System.Text.UnicodeEncoding.ASCII.GetBytes("geovindu");//UTF8
  16. Base64Encoder myEncoder = new Base64Encoder(data);
  17. StringBuilder sb = new StringBuilder();
  18. sb.Append(myEncoder.GetEncoded());
  19. string msg = UrlEncode(contenttxt);
  20. string content = string.Format("method={0}&isLongSms={1}&username={2}&password={3}&smstype={4}&mobile={5}&content={6}", "MS", 0, "geovindu", sb.ToString(), 0, mobile, msg);//
  21. byte[] bytes = Encoding.GetEncoding("gbk").GetBytes(content);
  22. request.ContentLength = bytes.Length;
  23. Stream os = request.GetRequestStream();
  24. //req.GetResponseAsync();
  25.  
  26. os.Write(bytes, 0, bytes.Length);
  27. os.Close();
  28. //System.Net.WebResponse resp = req.GetResponse();
  29. WebResponse resp = request.GetResponse();
  30.  
  31. Task<WebResponse> task = Task.Factory.FromAsync(
  32. request.BeginGetResponse,
  33. asyncResult => request.EndGetResponse(asyncResult),
  34. (object)null);
  35.  
  36. return task.ContinueWith(t => ReadStreamFromResponse(resp, content));
  37. }
  38.  
  39. /// <summary>
  40. /// 对内容进行编码
  41. /// </summary>
  42. /// <param name="str"></param>
  43. /// <returns></returns>
  44. private static string UrlEncode(string str)
  45. {
  46. StringBuilder sb = new StringBuilder();
  47. byte[] byStr = System.Text.Encoding.GetEncoding("gbk").GetBytes(str); //默认是System.Text.Encoding.Default.GetBytes(str)
  48. for (int i = 0; i < byStr.Length; i++)
  49. {
  50. sb.Append(@"%" + Convert.ToString(byStr[i], 16));
  51. }
  52.  
  53. return (sb.ToString());
  54. }
  55. /// <summary>
  56. ///
  57. /// </summary>
  58. /// <param name="response"></param>
  59. /// <returns></returns>
  60. private static string ReadStreamFromResponse(WebResponse response, string content)
  61. {
  62. Stream responseStream = response.GetResponseStream();
  63. using (StreamReader sr = new StreamReader(responseStream))
  64. {
  65. string strContent = sr.ReadToEnd();
  66. return strContent;
  67. }
  68. }
  69.  
  70. delegate string SynchOperation(string value);
  71. /// <summary>
  72. ///
  73. /// </summary>
  74. /// <param name="callback"></param>
  75. /// <param name="value"></param>
  76. void BeginTheSynchronousOperation(AsyncCallback callback, string value)
  77. {
  78. SynchOperation op = new SynchOperation(SynchronousOperation);
  79. op.BeginInvoke(value, callback, op);
  80. }
  81. /// <summary>
  82. ///
  83. /// </summary>
  84. /// <param name="value"></param>
  85. /// <returns></returns>
  86. string SynchronousOperation(string value)
  87. {
  88.  
  89. string str = "geovindu";
  90. Thread.Sleep(10000);
  91. str = str + value;
  92. return str;
  93. }
  94. /// <summary>
  95. ///
  96. /// </summary>
  97. /// <param name="result"></param>
  98. void CallbackOperation(IAsyncResult result)
  99. {
  100. // get your delegate
  101. var ar = result.AsyncState as SynchOperation;
  102. // end invoke and get value
  103. var returned = ar.EndInvoke(result);
  104. Response.Write(returned);
  105.  
  106. }
  107. /// <summary>
  108. ///
  109. /// </summary>
  110. /// <param name="sender"></param>
  111. /// <param name="e"></param>
  112. protected void Button1_Click(object sender, EventArgs e)
  113. {
  114. BeginTheSynchronousOperation(CallbackOperation, this.TextBox1.Text.Trim());
  115. var task = MakeAsyncRequest("application/x-www-form-urlencoded", "geovindu", "1388888888");
  116. Response.Write(string.Format("Got response of {0}", task.Result)); //返回成功
  117. }

  第二种方法:  用HttpClient 更省代码  .net 4.6

  1. /// <summary>
  2. /// 发送
  3. /// </summary>
  4. /// <param name="sender"></param>
  5. /// <param name="e"></param>
  6. protected void Button1_Click(object sender, EventArgs e)
  7. {
  8.  
  9. Response.Write(isFail(sendMessage("138888888", "【六福珠宝】兴高高兴,天下为公", "geovindu")));
  10.  
  11. }
  12.  
  13. /// <summary>
  14. /// 发送信息
  15. /// geovindu 涂聚文
  16. /// </summary>
  17. /// <param name="mobile"></param>
  18. /// <param name="contenttxt"></param>
  19. /// <param name="user"></param>
  20. /// <returns></returns>
  21. private string sendMessage(string mobile, string contenttxt, string user)
  22. {
  23. string result = string.Empty;
  24.  
  25. Uri u = new Uri("http://www.dusystem.com/smsSend.do");
  26. string pwd = "geovindu";// 
  27. string msg = UrlEncodeNew(contenttxt);
  28. var payload = string.Format("username={0}&password={1}&mobile={2}&content={3}", "geovindu", pwd, mobile, msg);
  29. HttpContent c = new StringContent(payload, Encoding.UTF8, "application/x-www-form-urlencoded");
  30. var t = Task.Run(() => PostURI(u, c));
  31. t.Wait();
  32. result=t.Result;
  33. return result;
  34. }
  35. /// <summary>
  36. /// 涂聚文 Geovin Du
  37. ///
  38. /// </summary>
  39. /// <param name="u"></param>
  40. /// <param name="c"></param>
  41. /// <returns></returns>
  42. static async Task<string> PostURI(Uri u, HttpContent c)
  43. {
  44. var response = string.Empty;
  45. using (var client = new HttpClient())
  46. {
  47. //string url = "http://myserver/method";
  48. //string content = "param1=1&param2=2";
  49. //HttpClientHandler handler = new HttpClientHandler();
  50. //HttpClient httpClient = new HttpClient(handler);
  51. //HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, u);
  52. //HttpResponseMessage response = await httpClient.SendAsync(request, content);
  53.  
  54. HttpResponseMessage result = await client.PostAsync(u, c);
  55. if (result.IsSuccessStatusCode)
  56. {
  57. response = result.StatusCode.ToString();
  58. Task<string> t = result.Content.ReadAsStringAsync();
  59. response = t.Result;
  60. }
  61. }
  62. return response;
  63. }
  64.  
  65. private bool isFail(string i)
  66. {
  67. bool ok = false;
  68. if (double.Parse(i) > 0)
  69. {
  70. ok = true;
  71. }
  72. return ok;
  73. }

  

Csharp:HttpWebRequest or HttpClient的更多相关文章

  1. 在 IIS 6 和 IIS 7中配置Https,设置WCF同时支持HTTP和HTPPS,以及使用HttpWebRequest和HttpClient调用HttpS

    IIS 7 ,给IIS添加CA证书以支持https IIS 6 架设证书服务器 及 让IIS启用HTTPS服务 WCF IIS 7中配置HTTPS C#利用HttpWebRequest进行post请求 ...

  2. webrequest HttpWebRequest webclient/HttpClient

    webrequest(abstract类,不可直接用) <--- (继承)---- HttpWebRequest(更好的控制请求) <--- (继承)---- webclient (简单快 ...

  3. csharp: HttpWebRequest and HttpWebResponse

    http://stackoverflow.com/questions/4015324/http-request-with-post Response.Charset = "GBK" ...

  4. WebClient, HttpClient, HttpWebRequest ,RestSharp之间的区别与抉择

    NETCore提供了三种不同类型用于生产的REST API: HttpWebRequest;WebClient;HttpClient,开源社区创建了另一个名为RestSharp的库.如此多的http库 ...

  5. WebClient vs HttpClient vs HttpWebRequest

    转载:http://www.diogonunes.com/blog/webclient-vs-httpclient-vs-httpwebrequest/ Just when I was startin ...

  6. 如何选择 WebClient,HttpClient,HttpWebRequest

    当我们在用 .NET 调用 RestAPI 时通常有三种选择,分别为:WebClient, HttpWebRequest,HttpClient,这篇文章我们将会讨论如何使用这三种方式去调用 RestA ...

  7. CSharp 相关知识点小结

    1.JS获取iframe下面的内容document.getElementById('IFRAME1').contentDocument; 2.dialog 弹出层,定位:postion:'bottom ...

  8. C# HttpClient设置cookies的两种办法

    前言:最近公司使用HttpClient对象在发送请求,抛弃了之前的HttpWebRequest,使用httpClient有个好处:就是可以只使用一个HttpClient的实例,去完成发送所有的请求数据 ...

  9. 【初码干货】关于.NET玩爬虫这些事

    这几天在微信群里又聊到.NET可以救中国但是案例太少不深的问题,我说.NET玩爬虫简直就是宇宙第一,于是大神朱永光说,你为何不来写一篇总结一下? 那么今天就全面的来总结一下,在.NET生态下,如何玩爬 ...

随机推荐

  1. ctf中关于图片的隐写随笔(不全)

    ①JPG图片的结束符,十六进制常为FFD9 ②binwalk的原理是:检查常见的文件头信息,如果不符合,一定有隐藏信息.③JPG是有损压缩,PNG是无损压缩,BMP是不压缩. 隐写的基本原理:图片查看 ...

  2. 复制节点(cloneNode)

    DOM提供用来复制节点方法. cloneNode():将为给定节点创建一个副本,这个方法的返回值是一个指向新建克隆节点的引用指针, reference = node.cloneNode(deep) 这 ...

  3. SpringBoot打成war包,部署Tomcat服务器

      1: 创建spring boot项目 使用 Spring initializr  可以直接选择创建包的方式 也可以选择在Pom中更改 <groupId>com.dgw</grou ...

  4. Educational Codeforces Round 34 (Rated for Div. 2) A B C D

    Educational Codeforces Round 34 (Rated for Div. 2) A Hungry Student Problem 题目链接: http://codeforces. ...

  5. 基于PyTorch实现MNIST手写字识别

    本篇不涉及模型原理,只是分享下代码.想要了解模型原理的可以去看网上很多大牛的博客. 目前代码实现了CNN和LSTM两个网络,整个代码分为四部分: Config:项目中涉及的参数: CNN:卷积神经网络 ...

  6. 快速理解spark-on-k8s中的external-shuffle-service

    [摘要] external-shuffle-service是Spark里面一个重要的特性,有了它后,executor可以在不同的stage阶段动态改变数量,大大提升集群资源利用率.但是这个特性当前在k ...

  7. nginx的部署及配置文件的介绍 域名 用户认证 SSL加密模块

    步骤一:构建Nginx服务器 yum -y install gcc pcre-devel openssl-devel        #安装依赖包 wget   http://nginx.org/dow ...

  8. Hive Hadoop 解析 orc 文件

    解析 orc 格式 为 json 格式: ./hive --orcfiledump -d <hdfs-location-of-orc-file> 把解析的 json 写入 到文件 ./hi ...

  9. luogu P2343 宝石管理系统 |分块+堆

    题目描述 GY君购买了一批宝石放进了仓库.有一天GY君心血来潮,想要清点他的宝石,于是把m个宝石都取出来放进了宝石管理系统.每个宝石i都有一个珍贵值vi,他希望你能编写程序查找到从大到小第n珍贵的宝石 ...

  10. 商品分页查询 ego-prc 实现-easyui

    使用 easyui 的 DataGrid 控件实现商品的分页查询,DataGrid 控件提交分页所需要的 page 和rows 参数,后台响应包含总记录数 total 和需要显示的商品对象的集合 ro ...