WebRequest Get
#region WebRequest Get
/// <summary>
/// http://localhost:15325/api/ImitateHttp/WebRequestGet?Name0="NameLi"
/// </summary>
/// <param name="Name"></param>
/// <returns></returns>
[System.Web.Http.HttpGet]
public string WebRequestGet(string Name0)
{
string strReturn = "";// objWeather.city;
try
{
//参数url化
String city = "徐州";
//拼地址
String apiUrl = "https://www.sojson.com/open/api/weather/json.shtml?city=" + city;
WebRequest myWebRequest = WebRequest.Create(apiUrl);
WebResponse myWebResponse = myWebRequest.GetResponse();
Stream ReceiveStream = myWebResponse.GetResponseStream();
string responseStr = "";
if (ReceiveStream != null)
{
StreamReader reader = new StreamReader(ReceiveStream, Encoding.UTF8);
responseStr = reader.ReadToEnd();
reader.Close();
}
myWebResponse.Close();
RootClass objWeather = Newtonsoft.Json.JsonConvert.DeserializeObject<RootClass>(responseStr);
strReturn = responseStr;
}
catch (Exception ex)
{
throw ex;
}
return strReturn;
}
#endregion
WebRequest Post
#region WebRequest Post
/// <summary>
/// http://localhost:15325/api/ImitateHttp/WebRequestPost
///
/// http://lbsyun.baidu.com/index.php?title=yingyan/api/v3/entity
///
/// {"AK":"SoEMqok1s5IKt5EDb5VARNr6WoKk74h2","service_id":1805228,"entity_name":"entityName","entity_desc":"entityDesc","province":"provinceJS","city":"cityXZ","sn":""}
/// </summary>
/// <param name="Name0"></param>
/// <returns></returns>
[System.Web.Http.HttpPost]
public string WebRequestPost([FromBody]BaiduEntityRequest objRequest)
{
string strReturn = "";// objWeather.city;
try
{
//请求路径
string url = "http://yingyan.baidu.com/api/v3/entity/add";
//定义request并设置request的路径
WebRequest request = WebRequest.Create(url);
request.Method = "post";
// objRequest 可以不从请求给,测试的时候在这里写死
//BaiduEntityRequest objRequest = new BaiduEntityRequest();
//objRequest.ak = "SoEMqok1s5IKt5EDb5VARNr6WoKk74h2";
//objRequest.service_id = 1805228;
//objRequest.entity_name = "entityName";
//objRequest.entity_desc = "entityDesc";
//objRequest.province = "provinceJS";
//objRequest.city = "cityXZ";
//objRequest.sn = "";
//初始化request参数
//string postData = "{ ID: \"1\", NAME: \"Jim\", CREATETIME: \"1988-09-11\" }";
string postData = Newtonsoft.Json.JsonConvert.SerializeObject(objRequest);
//设置参数的编码格式,解决中文乱码
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
//设置request的MIME类型及内容长度
request.ContentType = "application/json";
request.ContentLength = byteArray.Length;
//打开request字符流
Stream dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
//定义response为前面的request响应
WebResponse response = request.GetResponse();
//获取相应的状态代码
Console.WriteLine(((HttpWebResponse)response).StatusDescription);
//定义response字符流
dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string responseFromServer = reader.ReadToEnd();//读取所有
Console.WriteLine(responseFromServer);
}
catch (Exception ex)
{
throw ex;
}
return strReturn;
}
#endregion
HttpWebRequest Get
#region HttpWebRequest Get
/// <summary>
/// http://localhost:15325/api/ImitateHttp/HttpWebRequestGet?Name1="NameLi"
/// HttpWebRequest : WebRequest, ISerializable
/// </summary>
/// <param name="Name"></param>
/// <returns></returns>
[System.Web.Http.HttpGet]
public string HttpWebRequestGet(string Name1)
{
string strReturn = "";// objWeather.city;
try
{
//参数url化
String city = "徐州";
//拼地址
String apiUrl = "https://www.sojson.com/open/api/weather/json.shtml?city=" + city;
HttpWebRequest myWebRequest = (HttpWebRequest)WebRequest.Create(apiUrl);
HttpWebResponse myWebResponse = (HttpWebResponse)myWebRequest.GetResponse();
Stream ReceiveStream = myWebResponse.GetResponseStream();
string responseStr = "";
if (ReceiveStream != null)
{
StreamReader reader = new StreamReader(ReceiveStream, Encoding.UTF8);
responseStr = reader.ReadToEnd();
reader.Close();
}
myWebResponse.Close();
RootClass objWeather = Newtonsoft.Json.JsonConvert.DeserializeObject<RootClass>(responseStr);
strReturn = responseStr;
}
catch (Exception)
{
throw;
}
return strReturn;
}
#endregion
HttpWebRequest Post
#region HttpWebRequest Post
/// <summary>
/// http://localhost:15325/api/ImitateHttp/HttpWebRequestPost
/// {"AK":"SoEMqok1s5IKt5EDb5VARNr6WoKk74h2","service_id":1805228,"entity_name":"entityName","entity_desc":"entityDesc","province":"provinceJS","city":"cityXZ","sn":""}
/// </summary>
/// <param name="objRequest"></param>
/// <returns></returns>
[System.Web.Http.HttpPost]
public string HttpWebRequestPost([FromBody]BaiduEntityRequest objRequest)
{
string strReturn = "";// objWeather.city;
//data
string cookieStr = "51fd9f14fa7561b5";
//string postData = string.Format("userid={0}&password={1}", "参数1", "参数2");
string postData = Newtonsoft.Json.JsonConvert.SerializeObject(objRequest);
byte[] data = Encoding.UTF8.GetBytes(postData);
// Prepare web request...
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://yingyan.baidu.com/api/v3/entity/add");
request.Method = "POST";
request.Referer = "http://yingyan.baidu.com/api/v3/entity/add";
// request.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
request.ContentType = "application/json; charset=UTF-8";
request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36";
request.Host = "yingyan.baidu.com";
request.Headers.Add("Cookie", cookieStr);
request.ContentLength = data.Length;
Stream newStream = request.GetRequestStream();
// Send the data.
newStream.Write(data, 0, data.Length);
newStream.Close();
// Get response
HttpWebResponse myResponse = (HttpWebResponse)request.GetResponse();
StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
string content = reader.ReadToEnd(); //{"status":101,"message":"AK参数不存在"}
Console.WriteLine(content);
Console.ReadLine();
return strReturn;
}
WebClient Get
#region WebClient Get
/// <summary>
/// http://localhost:15325/api/ImitateHttp/WebClientGet?Name2="NameLi"
/// </summary>
/// <param name="Name2"></param>
/// <returns></returns>
[System.Web.Http.HttpGet]
public string WebClientGet(string Name2)
{
string strReturn = "";
//实例化 System.Net.WebClient
WebClient webClient = new WebClient();
//参数url化
String city = "徐州";
//拼地址
String apiUrl = "https://www.sojson.com/open/api/weather/json.shtml?city=" + city;
byte[] responseData = webClient.DownloadData(apiUrl);
//释放
webClient.Dispose();
//处理返回数据(一般用json)
string srcString = Encoding.UTF8.GetString(responseData);
////获取流数据 方式二
//Stream webStream = webClient.OpenRead(apiUrl);
//StreamReader reader = new StreamReader(webStream, Encoding.UTF8);
//string srcString = reader.ReadToEnd();
//reader.Close();
//webStream.Close();
strReturn = srcString;
return strReturn;
}
#endregion
WebClient Post
#region WebClient Post
/// <summary>
///
/// http://localhost:15325/api/ImitateHttp/WebClientPost
/// {"AK":"SoEMqok1s5IKt5EDb5VARNr6WoKk74h2","service_id":1805228,"entity_name":"entityName","entity_desc":"entityDesc","province":"provinceJS","city":"cityXZ","sn":""}
///
/// </summary>
/// <param name="objRequest"></param>
/// <returns></returns>
[System.Web.Http.HttpPost]
public string WebClientPost([FromBody]BaiduEntityRequest objRequest){
string strReturn = "";
string URI = "http://yingyan.baidu.com/api/v3/entity/add";
string postData = Newtonsoft.Json.JsonConvert.SerializeObject(objRequest);
//实例化
WebClient webClient = new WebClient();
webClient.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
webClient.Encoding = Encoding.UTF8;
strReturn= webClient.UploadString(URI, postData);
return strReturn;
}
#endregion
HttpClient Get
#region HttpClient Get
/// <summary>
/// ok
/// 注意要到nuget先下载HttpClient
/// System.Net.Http.HttpClient
/// http://localhost:15325/api/ImitateHttp/HttpClientGet?Name3="NameLi"
///
/// 精简写法
///
/// </summary>
/// <param name="Name3"></param>
/// <returns></returns>
[System.Web.Http.HttpGet]
public string HttpClientGet(string Name3)
{
string strReturn = "";
//参数url化
String city = "徐州";
//拼地址
String apiUrl = "https://www.sojson.com/open/api/weather/json.shtml?city=" + city;
HttpClient httpClient = new HttpClient();
HttpResponseMessage response = httpClient.GetAsync(new Uri(apiUrl)).Result;
strReturn = response.Content.ReadAsStringAsync().Result;
return strReturn;
}
#endregion
HttpClient Get2
#region HttpClient Get2
/// <summary>
/// ok 有返回值
/// 标准写法
/// </summary>
/// <returns></returns>
[System.Web.Http.HttpGet]
public string HttpClientGet2()
{
string strReturn = "";
string uri="http://api.worldbank.org/countries?format=json";
HttpClient httpClient = new HttpClient();
// 创建一个异步GET请求,当请求返回时继续处理
httpClient.GetAsync(uri).ContinueWith((requestTask) =>
{
HttpResponseMessage response = requestTask.Result;
//确认响应成功,否则抛出异常
response.EnsureSuccessStatusCode();
//异步读取响应字符串
response.Content.ReadAsStringAsync().ContinueWith(
(readTask) => { strReturn = readTask.Result; }
);
}
);
return strReturn;
}
#endregion
HttpClient Post
#region HttpClient Post
/// <summary>
///
/// http://localhost:15325/api/ImitateHttp/HttpClientPost
///
///
/// </summary>
/// <param name="objRequest"></param>
/// <returns></returns>
[System.Web.Http.HttpPost]
public string HttpClientPost([FromBody]osLoginRequest objRequest)
{
string strReturn = "";
using (var httpClient = new HttpClient())
{
// 设置请求头信息
httpClient.DefaultRequestHeaders.Add("Host", "www.oschina.net");
httpClient.DefaultRequestHeaders.Add("Method", "Post");
httpClient.DefaultRequestHeaders.Add("KeepAlive", "false"); // HTTP KeepAlive设为false,防止HTTP连接保持
httpClient.DefaultRequestHeaders.Add("UserAgent",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11");
// 构造POST参数
HttpContent postContent = new FormUrlEncodedContent(new Dictionary<string, string>()
{
{"email", objRequest.email},
{"pwd", EncryptPassword(objRequest.pwd, "SHA1")}
});
httpClient
.PostAsync("http://www.oschina.net/action/user/hash_login", postContent)
.ContinueWith(
(postTask) =>
{
HttpResponseMessage response = postTask.Result;
// 确认响应成功,否则抛出异常
response.EnsureSuccessStatusCode();
// 异步读取响应为字符串
response.Content.ReadAsStringAsync().ContinueWith(
(readTask) => {
Console.WriteLine("响应网页内容:" + readTask.Result);
strReturn = readTask.Result;
});
Console.WriteLine("响应是否成功:" + response.IsSuccessStatusCode);
Console.WriteLine("响应头信息如下:\n");
var headers = response.Headers;
foreach (var header in headers)
{
Console.WriteLine("{0}: {1}", header.Key, string.Join("", header.Value.ToList()));
}
});
}
return strReturn;
}
// MD5或SHA1加密
private static string EncryptPassword(string pwdStr, string pwdFormat)
{
string EncryptPassword = null;
if ("SHA1".Equals(pwdFormat.ToUpper()))
{
EncryptPassword = FormsAuthentication.HashPasswordForStoringInConfigFile(pwdStr, "SHA1");
}
else if ("MD5".Equals(pwdFormat.ToUpper()))
{
EncryptPassword = FormsAuthentication.HashPasswordForStoringInConfigFile(pwdStr, "MD5");
}
else
{
EncryptPassword = pwdStr;
}
return EncryptPassword;
}
#endregion