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生态下,如何玩爬 ...
随机推荐
- Java正则表达式Pattern和Matcher类
转载自--小鱼儿是坏蛋(原文链接) 概述 Pattern类的作用在于编译正则表达式后创建一个匹配模式. Matcher类使用Pattern实例提供的模式信息对正则表达式进行匹配 Pattern类 ...
- OC中ARC forbids explicit message send of release错误
在ios编程中,如果成员变量为对象,我们需要对成员变量内存管理,否则,会造成内存泄露.即我们要对成员变量进行手动的内存释放. 很显然,是ARC的问题. 错误原因:在创建工程的时候点选了“Use Aut ...
- 第二周选做(myod)
02.第二周myod(选做) 实验要求: 复习c文件处理内容 编写myod.c 用myod XXX实现Linux下od -tx -tc XXX的功能 main与其他分开,制作静态库和动态库 编写Mak ...
- 一文读懂Python web框架和web服务器之间的关系
我们都知道 Python 作为一门强大的语言,能够适应快速原型和较大项目的制作,因此被广泛用于 web 应用程序的开发中. 在面试的过程中,大家或多或少都被问到过这样一个问题:一个请求从浏览器发出到数 ...
- 华为云ROMA,联接企业应用的现在与未来
2019.9.19日,在华为全联接大会的华为云Summit中,华为云CTO宇昕总提出:"企业的应用与数据集成,始终是数字化转型和智能化升级的关键,华为云企业应用与数据集成平台ROMA,打破时 ...
- Python如何爬取实时变化的WebSocket数据
一.前言 作为一名爬虫工程师,在工作中常常会遇到爬取实时数据的需求,比如体育赛事实时数据.股市实时数据或币圈实时变化的数据.如下图: Web 领域中,用于实现数据'实时'更新的手段有轮询和 WebSo ...
- 关于flask-sqlalchemy的用法研究
最近使用到flask的sqlalchemy,因为flask对sqlalchemy做了一些封装,加上自己本身对sqlalchemy也不熟悉,用法上走了很多弯路. 因为没时间去研究sqlalchemy的源 ...
- MySQL的存储(二、创建表并插入)
创建表 首先创建一个 spiders的数据库 cursor.execute("create database spiders default character set utf8" ...
- 洛谷 题解 P3173 【[HAOI2009]巧克力】
本蒟蒻又双叒叕被爆踩辣! 又是一道经典的贪心题: 那么怎样切割该块巧克力,花费的代价最少呢? Solution: 窝们考虑每个状态,有多少种选择方法? 是不是可以选择横着切或者竖着切,就这两种方法吧: ...
- Python自动化之下拉框,隐藏标签定位 代码&报错解决
python自动化:下拉框定位方法之select标签 style="display: none;" 报错 selenium.common.exceptions.ElementNo ...