Csharp:HttpWebRequest or HttpClient
- /// <summary>
- /// Define other methods and classes here
- /// </summary>
- /// <param name="url"></param>
- /// <param name="contentType"></param>
- /// <returns></returns>
- public static Task<string> MakeAsyncRequest(string contentType, string contenttxt, string mobile)
- {
- string url = "http://www.dusystem.com/UserServiceAPI";
- HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
- request.ContentType = contentType;
- request.Method = WebRequestMethods.Http.Post; //get
- request.Timeout = 20000;
- request.Proxy = null;
- byte[] data = System.Text.Encoding.GetEncoding("gbk").GetBytes("geovindu"); //System.Text.UnicodeEncoding.ASCII.GetBytes("geovindu");//UTF8
- Base64Encoder myEncoder = new Base64Encoder(data);
- StringBuilder sb = new StringBuilder();
- sb.Append(myEncoder.GetEncoded());
- string msg = UrlEncode(contenttxt);
- 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);//
- byte[] bytes = Encoding.GetEncoding("gbk").GetBytes(content);
- request.ContentLength = bytes.Length;
- Stream os = request.GetRequestStream();
- //req.GetResponseAsync();
- os.Write(bytes, 0, bytes.Length);
- os.Close();
- //System.Net.WebResponse resp = req.GetResponse();
- WebResponse resp = request.GetResponse();
- Task<WebResponse> task = Task.Factory.FromAsync(
- request.BeginGetResponse,
- asyncResult => request.EndGetResponse(asyncResult),
- (object)null);
- return task.ContinueWith(t => ReadStreamFromResponse(resp, content));
- }
- /// <summary>
- /// 对内容进行编码
- /// </summary>
- /// <param name="str"></param>
- /// <returns></returns>
- private static string UrlEncode(string str)
- {
- StringBuilder sb = new StringBuilder();
- byte[] byStr = System.Text.Encoding.GetEncoding("gbk").GetBytes(str); //默认是System.Text.Encoding.Default.GetBytes(str)
- for (int i = 0; i < byStr.Length; i++)
- {
- sb.Append(@"%" + Convert.ToString(byStr[i], 16));
- }
- return (sb.ToString());
- }
- /// <summary>
- ///
- /// </summary>
- /// <param name="response"></param>
- /// <returns></returns>
- private static string ReadStreamFromResponse(WebResponse response, string content)
- {
- Stream responseStream = response.GetResponseStream();
- using (StreamReader sr = new StreamReader(responseStream))
- {
- string strContent = sr.ReadToEnd();
- return strContent;
- }
- }
- delegate string SynchOperation(string value);
- /// <summary>
- ///
- /// </summary>
- /// <param name="callback"></param>
- /// <param name="value"></param>
- void BeginTheSynchronousOperation(AsyncCallback callback, string value)
- {
- SynchOperation op = new SynchOperation(SynchronousOperation);
- op.BeginInvoke(value, callback, op);
- }
- /// <summary>
- ///
- /// </summary>
- /// <param name="value"></param>
- /// <returns></returns>
- string SynchronousOperation(string value)
- {
- string str = "geovindu";
- Thread.Sleep(10000);
- str = str + value;
- return str;
- }
- /// <summary>
- ///
- /// </summary>
- /// <param name="result"></param>
- void CallbackOperation(IAsyncResult result)
- {
- // get your delegate
- var ar = result.AsyncState as SynchOperation;
- // end invoke and get value
- var returned = ar.EndInvoke(result);
- Response.Write(returned);
- }
- /// <summary>
- ///
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- protected void Button1_Click(object sender, EventArgs e)
- {
- BeginTheSynchronousOperation(CallbackOperation, this.TextBox1.Text.Trim());
- var task = MakeAsyncRequest("application/x-www-form-urlencoded", "geovindu", "1388888888");
- Response.Write(string.Format("Got response of {0}", task.Result)); //返回成功
- }
第二种方法: 用HttpClient 更省代码 .net 4.6
- /// <summary>
- /// 发送
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- protected void Button1_Click(object sender, EventArgs e)
- {
- Response.Write(isFail(sendMessage("138888888", "【六福珠宝】兴高高兴,天下为公", "geovindu")));
- }
- /// <summary>
- /// 发送信息
- /// geovindu 涂聚文
- /// </summary>
- /// <param name="mobile"></param>
- /// <param name="contenttxt"></param>
- /// <param name="user"></param>
- /// <returns></returns>
- private string sendMessage(string mobile, string contenttxt, string user)
- {
- string result = string.Empty;
- Uri u = new Uri("http://www.dusystem.com/smsSend.do");
- string pwd = "geovindu";//
- string msg = UrlEncodeNew(contenttxt);
- var payload = string.Format("username={0}&password={1}&mobile={2}&content={3}", "geovindu", pwd, mobile, msg);
- HttpContent c = new StringContent(payload, Encoding.UTF8, "application/x-www-form-urlencoded");
- var t = Task.Run(() => PostURI(u, c));
- t.Wait();
- result=t.Result;
- return result;
- }
- /// <summary>
- /// 涂聚文 Geovin Du
- ///
- /// </summary>
- /// <param name="u"></param>
- /// <param name="c"></param>
- /// <returns></returns>
- static async Task<string> PostURI(Uri u, HttpContent c)
- {
- var response = string.Empty;
- using (var client = new HttpClient())
- {
- //string url = "http://myserver/method";
- //string content = "param1=1¶m2=2";
- //HttpClientHandler handler = new HttpClientHandler();
- //HttpClient httpClient = new HttpClient(handler);
- //HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, u);
- //HttpResponseMessage response = await httpClient.SendAsync(request, content);
- HttpResponseMessage result = await client.PostAsync(u, c);
- if (result.IsSuccessStatusCode)
- {
- response = result.StatusCode.ToString();
- Task<string> t = result.Content.ReadAsStringAsync();
- response = t.Result;
- }
- }
- return response;
- }
- private bool isFail(string i)
- {
- bool ok = false;
- if (double.Parse(i) > 0)
- {
- ok = true;
- }
- return ok;
- }
Csharp:HttpWebRequest or HttpClient的更多相关文章
- 在 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请求 ...
- webrequest HttpWebRequest webclient/HttpClient
webrequest(abstract类,不可直接用) <--- (继承)---- HttpWebRequest(更好的控制请求) <--- (继承)---- webclient (简单快 ...
- csharp: HttpWebRequest and HttpWebResponse
http://stackoverflow.com/questions/4015324/http-request-with-post Response.Charset = "GBK" ...
- WebClient, HttpClient, HttpWebRequest ,RestSharp之间的区别与抉择
NETCore提供了三种不同类型用于生产的REST API: HttpWebRequest;WebClient;HttpClient,开源社区创建了另一个名为RestSharp的库.如此多的http库 ...
- WebClient vs HttpClient vs HttpWebRequest
转载:http://www.diogonunes.com/blog/webclient-vs-httpclient-vs-httpwebrequest/ Just when I was startin ...
- 如何选择 WebClient,HttpClient,HttpWebRequest
当我们在用 .NET 调用 RestAPI 时通常有三种选择,分别为:WebClient, HttpWebRequest,HttpClient,这篇文章我们将会讨论如何使用这三种方式去调用 RestA ...
- CSharp 相关知识点小结
1.JS获取iframe下面的内容document.getElementById('IFRAME1').contentDocument; 2.dialog 弹出层,定位:postion:'bottom ...
- C# HttpClient设置cookies的两种办法
前言:最近公司使用HttpClient对象在发送请求,抛弃了之前的HttpWebRequest,使用httpClient有个好处:就是可以只使用一个HttpClient的实例,去完成发送所有的请求数据 ...
- 【初码干货】关于.NET玩爬虫这些事
这几天在微信群里又聊到.NET可以救中国但是案例太少不深的问题,我说.NET玩爬虫简直就是宇宙第一,于是大神朱永光说,你为何不来写一篇总结一下? 那么今天就全面的来总结一下,在.NET生态下,如何玩爬 ...
随机推荐
- ctf中关于图片的隐写随笔(不全)
①JPG图片的结束符,十六进制常为FFD9 ②binwalk的原理是:检查常见的文件头信息,如果不符合,一定有隐藏信息.③JPG是有损压缩,PNG是无损压缩,BMP是不压缩. 隐写的基本原理:图片查看 ...
- 复制节点(cloneNode)
DOM提供用来复制节点方法. cloneNode():将为给定节点创建一个副本,这个方法的返回值是一个指向新建克隆节点的引用指针, reference = node.cloneNode(deep) 这 ...
- SpringBoot打成war包,部署Tomcat服务器
1: 创建spring boot项目 使用 Spring initializr 可以直接选择创建包的方式 也可以选择在Pom中更改 <groupId>com.dgw</grou ...
- 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. ...
- 基于PyTorch实现MNIST手写字识别
本篇不涉及模型原理,只是分享下代码.想要了解模型原理的可以去看网上很多大牛的博客. 目前代码实现了CNN和LSTM两个网络,整个代码分为四部分: Config:项目中涉及的参数: CNN:卷积神经网络 ...
- 快速理解spark-on-k8s中的external-shuffle-service
[摘要] external-shuffle-service是Spark里面一个重要的特性,有了它后,executor可以在不同的stage阶段动态改变数量,大大提升集群资源利用率.但是这个特性当前在k ...
- nginx的部署及配置文件的介绍 域名 用户认证 SSL加密模块
步骤一:构建Nginx服务器 yum -y install gcc pcre-devel openssl-devel #安装依赖包 wget http://nginx.org/dow ...
- Hive Hadoop 解析 orc 文件
解析 orc 格式 为 json 格式: ./hive --orcfiledump -d <hdfs-location-of-orc-file> 把解析的 json 写入 到文件 ./hi ...
- luogu P2343 宝石管理系统 |分块+堆
题目描述 GY君购买了一批宝石放进了仓库.有一天GY君心血来潮,想要清点他的宝石,于是把m个宝石都取出来放进了宝石管理系统.每个宝石i都有一个珍贵值vi,他希望你能编写程序查找到从大到小第n珍贵的宝石 ...
- 商品分页查询 ego-prc 实现-easyui
使用 easyui 的 DataGrid 控件实现商品的分页查询,DataGrid 控件提交分页所需要的 page 和rows 参数,后台响应包含总记录数 total 和需要显示的商品对象的集合 ro ...