C#分析URL参数获取参数和值得对应列表(二)
不错博客:
[C#HttpHelper]官方产品发布与源码下载---苏飞版
http://www.sufeinet.com/thread-3-1-1.html
http://blog.csdn.net/xxj_jing/article/details/8107882
http://zhoufoxcn.blog.51cto.com/792419/561934/
http://www.dedecms.com/knowledge/program/asp-donet/2012/0803/4214.html
http://blog.csdn.net/zhoufoxcn/article/details/6404236
C# winform post 请求指定 url
/// <summary>
/// 请求信息帮助
/// </summary>
public class HttpHelper
{
/// <summary>
/// post 请求指定地址返回响应数据
/// </summary>
/// <param name="url">请求地址</param>
/// <param name="postData">请求数据</param>
/// <param name="timeout">请求超时时间(毫秒)</param>
/// <param name="requestCoding">请求编码</param>
/// <param name="responseCoding">响应编码</param>
/// <returns></returns>
public string PostRequest(string url, Dictionary<string, string> postData, int timeout, Encoding requestCoding, Encoding responseCoding)
{
string postStr = string.Empty;
if (postData != null)
{
postData.All(o =>
{
if (string.IsNullOrEmpty(postStr))
postStr = string.Format("{0}={1}", o.Key, o.Value);
else
postStr += string.Format("&{0}={1}", o.Key, o.Value); return true;
});
}
return PostRequest(url, postStr, timeout, requestCoding, responseCoding);
}
/// <summary>
/// post 请求指定地址返回响应数据
/// </summary>
/// <param name="url">请求地址</param>
/// <param name="postData">请求数据</param>
/// <param name="timeout">请求超时时间(毫秒)</param>
/// <param name="requestCoding">请求编码</param>
/// <param name="responseCoding">响应编码</param>
/// <returns></returns>
public string PostRequest(string url, string postData, int timeout, Encoding requestCoding, Encoding responseCoding)
{
string postUrl = VerifyUrl(url);
try
{
//写入POSTDATE里
byte[] byteArray = requestCoding.GetBytes(postData);
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(new Uri(postUrl));
webRequest.Method = "POST";
webRequest.Timeout = timeout;
webRequest.ContentType = "application/x-www-form-urlencoded";
webRequest.ContentLength = byteArray.Length;
Stream newStream = webRequest.GetRequestStream();
newStream.Write(byteArray, 0, byteArray.Length);
newStream.Close();
//接收返回信息:
HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse();
StreamReader php = new StreamReader(response.GetResponseStream(), responseCoding);
string result = php.ReadToEnd();
return result;
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// 验证URL
/// </summary>
/// <param name="url">待验证 URL</param>
/// <returns></returns>
private string VerifyUrl(string url)
{
if (string.IsNullOrEmpty(url))
throw new Exception("URL 地址不可以为空!"); if (url.StartsWith("http://", StringComparison.CurrentCultureIgnoreCase))
return url; return string.Format("http://{1}", url);
}
}
/// <summary>
/// Http请求
/// </summary>
public class HttpUtility
{
/// <summary>
///通用HttpWebRequest
/// </summary>
/// <param name="method">请求方式(POST/GET)</param>
/// <param name="url">请求地址</param>
/// <param name="param">请求参数</param>
/// <param name="onComplete">完成后执行的操作(可选参数,通过此方法可以获取到HTTP状态码)</param>
/// <returns>请求返回的结果</returns>
public static string Request(string method, string url, string param, Action<HttpStatusCode, string> onComplete = null)
{
if (string.IsNullOrEmpty(url))
throw new ArgumentNullException("URL"); switch (method.ToUpper())
{
case "POST":
return Post(url, param, onComplete);
case "GET":
return Get(url, param, onComplete);
default:
throw new EntryPointNotFoundException("method:" + method);
}
} /// <summary>
/// Post请求
/// </summary>
/// <param name="url">请求地址</param>
/// <param name="param">参数</param>
/// <param name="onComplete">完成后执行的操作(可选参数,通过此方法可以获取到HTTP状态码)</param>
/// <returns>请求返回的结果</returns>
public static string Post(string url, string param, Action<HttpStatusCode, string> onComplete = null)
{
UrlCheck(ref url); byte[] bufferBytes = Encoding.UTF8.GetBytes(param); var request = WebRequest.Create(url) as HttpWebRequest;//HttpWebRequest方法继承自WebRequest, Create方法在WebRequest中定义,因此此处要显示的转换
request.Method = "POST";
request.ContentLength = bufferBytes.Length;
request.ContentType = "application/x-www-form-urlencoded"; try
{
using (var requestStream = request.GetRequestStream())
{
requestStream.Write(bufferBytes, , bufferBytes.Length);
}
}
catch (WebException ex)
{ return ex.Message;
} return HttpRequest(request, onComplete);
} /// <summary>
/// GET请求
/// </summary>
/// <param name="url">请求地址</param>
/// <param name="param">参数</param>
/// <param name="onComplete">完成后执行的操作(可选参数,通过此方法可以获取到HTTP状态码)</param>
/// <returns>请求返回结果</returns>
public static string Get(string url, string param, Action<HttpStatusCode, string> onComplete = null)
{
UrlCheck(ref url); if (!string.IsNullOrEmpty(param))
if (!param.StartsWith("?"))
param += "?" + param;
else
param += param; var request = WebRequest.Create(url) as HttpWebRequest;
request.Method = "GET";
request.ContentType = "application/x-www-form-urlencoded"; return HttpRequest(request, onComplete);
} /// <summary>
/// 请求的主体部分(由此完成请求并返回请求结果)
/// </summary>
/// <param name="request">请求的对象</param>
/// <param name="onComplete">完成后执行的操作(可选参数,通过此方法可以获取到HTTP状态码)</param>
/// <returns>请求返回结果</returns>
private static string HttpRequest(HttpWebRequest request, Action<HttpStatusCode, string> onComplete = null)
{
HttpWebResponse response = null; try
{
response = request.GetResponse() as HttpWebResponse;
}
catch (WebException ex)
{
response = ex.Response as HttpWebResponse;
} if (response == null)
{
if (onComplete != null)
onComplete(HttpStatusCode.NotFound, "请求远程返回为空");
return null;
} string result = string.Empty;
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
result = reader.ReadToEnd();
} if (onComplete != null)
onComplete(response.StatusCode, result); return result; } /// <summary>
/// URL拼写完整性检查
/// </summary>
/// <param name="url">待检查的URL</param>
private static void UrlCheck(ref string url)
{
if (!url.StartsWith("http://") && !url.StartsWith("https://"))
url = "http://" + url;
}
}
C#分析URL参数获取参数和值得对应列表(二)的更多相关文章
- C#分析URL参数获取参数和值得对应列表
原文: C#分析URL参数获取参数和值得对应列表 /// <summary> /// 分析url链接,返回参数集合 /// </summary> /// <param n ...
- C#分析URL参数获取参数和值得对应列表(一)
C#操作Url参数 http://www.cnblogs.com/RobotH/archive/2008/11/17/1335322.html 用 C# 分析 URL 中的参数信息 http://ww ...
- lua post参数获取,参数截断
post 请求头: a.application/x-www-form-urlencoded 普通表单提交 b.multipart/form-data 含有文件的表单,二进制上传 c.applicati ...
- php分割url,获取参数query
#测试网址: http://localhost/blog/testurl.php?id=5 //获取域名或主机地址echo $_SERVER['HTTP_HOST']."<br> ...
- js 从URL上获取参数
//获取匹配的 function getUrlParam(name) { var reg = new RegExp("(^|&)" + ...
- 从url(地址栏)获取参数:Jquery中getUrlParam()方法的使用
我想要获取如下id 如下代码(传参要加问好!!) function getUrlParam(id) { var regExp = new RegExp('([?]|&)' + id+ '=([ ...
- JS控制静态页面之间传递参数获取参数并应用
在项目中遇到这也一个问题: 有a.html和b.html. 1.a页面已经打开,b页面尚未打开,我希望在a页面设置好一些列参数,比如背景色,宽度等参数,传递给b页面,好让b页面在打开就能应用. 2.a ...
- Python股票分析系列——自动获取标普500股票列表.p5
该系列视频已经搬运至bilibili: 点击查看 欢迎来到Python for Finance教程系列的第5部分.在本教程和接下来的几节中,我们将着手研究如何为更多公司提供大量的定价信息,以及如何一次 ...
- ${param.xxx}获取url中的参数
在项目中看到了一个很奇怪的EL表达式...${param.catid}...一直找不到param在哪里定义的...(主要是水平太屎...) 然后从网上查了一下才知道是啥... EL表达式${param ...
随机推荐
- 表单元素 disabled 和 readonly 辨析
正确答案: B D 分析: Readonly 和 Disabled 是用在表单中的两个属性,它们都能够做到使用户不能够更改表单域中的内容.但是它们之间有着微小的差别,总结如下: 1)Readonly只 ...
- Nginx中的长连接
在nginx中,对于http1.0与http1.1是支持长连接的 我们知道,http请求是基于TCP协议之上的,那么,当客户端在发起请求前,需要先与服务端建立TCP连接,而每一次的TCP连接是需要三次 ...
- bzoj1040 内向树DP
2013-11-17 08:52 原题传送门http://www.lydsy.com/JudgeOnline/problem.php?id=1040 N个骑士,每个人有一个仇人,那么,每个骑士只有一个 ...
- shell命令行混合进制计算器smartbc
需要简单的计算的时候,不想用GUI的计算器,能在shell下直接计算就最好了 查了下,有个东西叫 bc, 具体的使用就不赘述了,可以运行bc,然后进去计算,也可以echo传递过去,大概是像这样 ec ...
- kuangbin带你飞 后缀数组 题解
2份模板 DC3 . 空间复杂度O3N 时间复杂度On #define F(x) ((x) / 3 + ((x) % 3 == 1 ? 0 : tb)) #define G(x) ((x) < ...
- Linux内核:关于中断你需要知道的【转】
转自:http://blog.csdn.net/duqi_2009/article/details/38009717 1.中断处理程序与其他内核函数真正的区别在于,中断处理程序是被内核调用来相应中断的 ...
- Oracle基础 12 对象 objects 同义词/序列/试图/索引
--创建同义词create public synonym employees for hr.employees; --公共同义词需要 create public synonym 权限 表的所有用户授 ...
- 4.flume实战(一)
需求:从指定网络端口采集数据输出到控制台 使用flume的关键就是写配置文件 a)配置source b)配置channel c)配置sink d)把以上三个组件串起来 我们看一下官网给的配置文件 # ...
- JavaScript ES6部分语法
ES6是JavaScript语言的新版本,它也可以叫做ES2015,之前学习的JavaScript属于ES5,ES6在它的基础上增加了一些语法,ES6是未来JavaScript的趋势,而且vue组件开 ...
- MAC使用homeBrew安装Redis
homeBrew的操作命令如下: brew search ** //查找某个软件包 brew list //列出已经安装的软件的包 brew install ** //安装某个软件包,默认安装的是稳定 ...