本文部分来源其它博客的摘取,如有侵权请留言删除。
本文为模拟浏览器的POST/GET请求,向web应用发起命令,具体代码可应用在网络爬虫,病毒机器人等方面。
下面是主要用到的一些代码段:
1.构建HTTPRequest请求/POST/GET
private HttpWebRequest createRequest(String url)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
//Post请求方式
request.Method = "POST";
//内容类型
request.ContentType = "application/json";
if (token != null&&token!="")
request.Headers.Add("Authorization","Bearer " + token);
return request;
}
2.向Request写入参数
public String writeParas(HttpWebRequest request,string jsonParas)
{
byte[] payload;
//将Json字符串转化为字节
payload = System.Text.Encoding.UTF8.GetBytes(jsonParas);
//设置请求的ContentLength
request.ContentLength = payload.Length;
//发送请求,获得请求流
request.ServicePoint.Expect100Continue = false;
//HttpWebResponse resp = (HttpWebResponse)request.GetResponse();
Stream writer = null;
try
{
writer = request.GetRequestStream();//获取用于写入请求数据的Stream对象
}
catch (Exception)
{
writer = null;
Console.Write("连接服务器失败!");
}
//将请求参数写入流
writer.Write(payload, 0, payload.Length);
writer.Close();//关闭请求流
HttpWebResponse response;
try
{
//获得响应流
response = (HttpWebResponse)request.GetResponse();
}
catch (WebException ex)
{
response = ex.Response as HttpWebResponse;
}
Stream s = response.GetResponseStream();
StreamReader sRead = new StreamReader(s);
string postContent = sRead.ReadToEnd();
sRead.Close();
return postContent;
}
3.解析返回值
如果是规则的json字符串,比较好解析
//字符串转json对象
JObject jsonData = JObject.Parse(resp);
//从json对象中取值
JObject data = (JObject)jsonData["data"];
//当json对象取值为对象列表,使用JArray接收,foreach遍历,即可得到每个对象
JArray droneL = (JArray)data["drone"];
foreach (JObject d in droneL)
{
}
如果是普通字符串,使用字符串截取函数.
3.1.根据单个分隔字符用split截取
string st="GT123_1";
string[] sArray=st.split("_");
即可得到sArray[0]="GT123",sArray[1]="1";
3.2.利用多个字符来分隔字符串
string str = "GTAZB_JiangjBen_123";
string[] sArray = str.Split(new char[2] { 'j', '_' });
foreach(string e in sArray)
{
Console.WriteLine(e);
}
得到sArray[0]="GTAZB",sArray[1]="Jiang",sArray[2]="Ben",sArray[3]="123";
3.3根据字符串或字符串组来截取字符串
string str = "GTAZB_JiangjBen_123";
string[] sArray = str.Split( new string[]{"Ji","jB"}, StringSplitOptions.RemoveEmptyEntries);
foreach(string e in sArray)
{
Console.WriteLine(e);
}
得到sArray[0]="GTAZB_",sArray[1]="ang",sArray[2]="en_123";
3.4提取字符串中的第i个字符开始的长度为j的字符串;特别的利用IndexOf找出目的字段所在位置;
string str = "GTAZB_JiangjBen_123";
int start=3,length=8;
Console.WriteLine(str.Substring(start-1, length));
输出得到AZB_Jian。
3.5提取字符串中右数长度为i的字符串
string str = "GTAZB_JiangjBen_123";
string tSt;
int i=5;
tSt = str.Substring(str.Length - i);
Console.WriteLine(tSt);
输出n_123;
3.6 取字符串的前i个字符
str=str.Substring(0,i); // or str=str.Remove(i,str.Length-i);
3.7 去掉字符串的前i个字符:
str=str.Remove(0,i); // or str=str.Substring(i);