C# 发HTTP请求
记录一下,调试使用
protected void btnSend_Click(object sender, EventArgs e)
{
string url = "http://localhost:3547/waplocation.aspx";
string mobileNo = this.txtMobileNo.Text;
StringBuilder reqStr = new StringBuilder(100);
reqStr.Append("reqtype=" + txtReqType.Text + "&mobile=" + mobileNo);
//reqStr.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
//reqStr.Append("<request>");
//reqStr.Append("<head><reqtype>" +txtReqType.Text +"</reqtype></head>");
//reqStr.Append("<body>");
//reqStr.Append("<mobiles>");
//reqStr.Append("<mobile>" + mobileNo +"</mobile>");
//reqStr.Append("</mobiles>");
//reqStr.Append("</body>");
//reqStr.Append("</request>");
string postData = reqStr.ToString();
ASCIIEncoding encoding = new ASCIIEncoding();
byte[] data = encoding.GetBytes(postData);
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url);
myRequest.Method = "POST";
myRequest.ContentType = "application/x-www-form-urlencoded";
myRequest.ContentLength = data.Length;
Stream newStream = myRequest.GetRequestStream();
newStream.Write(data, 0, data.Length);
newStream.Close();
HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.Default);
string content = reader.ReadToEnd();
txtResult.Text = content;
}
如果公司设置了代理,可以这样:
try
{
string postData = "";
ASCIIEncoding encoding = new ASCIIEncoding();
byte[] data = encoding.GetBytes(postData);
WebProxy wp = new WebProxy("proxy Address");
wp.Credentials = new System.Net.NetworkCredential("username", "password","domain");
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url);
myRequest.Proxy = wp;
myRequest.Method = "POST";
myRequest.ContentType = "application/x-www-form-urlencoded";
myRequest.ContentLength = data.Length;
Stream newStream = myRequest.GetRequestStream();
newStream.Write(data, 0, data.Length);
newStream.Close();
HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.Default);
string content = reader.ReadToEnd();
return content;
}
catch(Exception ex){
return string.Empty;
}
使用HTTP CLIENT的方式
public string Get(string url)
{
try
{
using (var httpClient = new HttpClient())
{
var response = httpClient.GetStringAsync(new Uri(url)).Result;
return response;
}
}
catch (Exception ex)
{
return ex.Message;
}
}
public string Post<T>(string url, T obj)
{
try
{
using (var client = new HttpClient())
{
var content = new StringContent(JsonConvert.SerializeObject(obj));
content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
var response = client.PostAsync(url, content).Result;
return response.Content.ReadAsStringAsync().Result;
}
}
catch (Exception ex)
{
return ex.Message;
}
}