我之前是接触过传参,http协议浏览器和服务器的三次握手以及常用的get/post传参,都是有了解的,不过c#实现post/get请求我第一想到的是?嗯?Ajax?当然这肯定不是。
我们接下来用下面这页面为例
我们先来分析下
我们先看button1的方法哈
参考下怎么定义返回参数的格式
代码贴下
public class Employees
{
public string firstName { get; set; }
public string lastName { get; set; }
}
public class Manager
{
public string salary { get; set; }
public string age { get; set; }
}
public class RootObject
{
public string ID { get; set; }
public List<Employees> employees { get; set; }
public List<Manager> manager { get; set; }
}
记得引用库
post完整代码
private void button1_Click(object sender, EventArgs e)
{
txt_Url.Text = "http://192.168.253.136:3000/login";
txt_User.Text = "Boy";
txt_Pwd.Text = "12345";
txt_VCode.Text = "admin";
string pwd = "";
string postData = "username=" + txt_User.Text + "&password=" + txt_Pwd.Text;
postData += ("&vcode=" + txt_VCode.Text);
byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(postData);
string url = txt_Url.Text;
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(new Uri(url));
webRequest.Method = "POST"; //POST
webRequest.ContentType = "application/json;charset=UTF-8";
webRequest.ContentLength = byteArray.Length;
//连接远程服务器
Stream newStream = webRequest.GetRequestStream();
newStream.Write(byteArray, 0, byteArray.Length);
newStream.Close();
HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse();
StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
//txt_Response.Text = sr.ReadToEnd();
//返回的json数组
string jsonText = sr.ReadToEnd();
Console.WriteLine(jsonText);
RootObject rb = JsonConvert.DeserializeObject<RootObject>(jsonText);
Console.WriteLine(rb.ID);
Console.WriteLine(rb.employees[0].firstName);
foreach (Manager ep in rb.manager)
{
Console.WriteLine(ep.salary);
pwd = pwd + "\n" + ep.salary;
}
txt_Response.Text = rb.ID + "\n" + rb.employees[0].firstName + "\n" + pwd;
}
我们再说下GET(引用里一个库 using System.Collections.Generic;)
private void button2_Click(object sender, EventArgs e)
{
txt_Url.Text = "http://192.168.253.136:3000/find";
txt_User.Text = "Boy";
txt_Pwd.Text = "12345";
txt_VCode.Text = "admin";
string url = txt_Url.Text;
string res = HttpHelper.GetHttpResponse(url,6000);
txt_Response.Text = res;
}
我们经常是将方法封装一下,方便别的地方调用,所以我们新建一个HttpHelper类
get的方法如下
using System.IO;
using System.Net;
using System.Text;
namespace wangyuyao
{
internal class HttpHelper
{
public static string GetHttpResponse(string url, int Timeout)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET";
request.ContentType = "text/html;charset=UTF-8";
request.UserAgent = null;
request.Timeout = Timeout;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
string retString = myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();
return retString;
}
}
}
然后我们去调用
private void button2_Click(object sender, EventArgs e)
{
txt_Url.Text = "http://192.168.253.136:3000/find";
txt_User.Text = "Boy";
txt_Pwd.Text = "12345";
txt_VCode.Text = "admin";
string url = txt_Url.Text;
string res = HttpHelper.GetHttpResponse(url,6000);
txt_Response.Text = res;
}
然后就可以访问了
百度网盘demo案例
链接:https://pan.baidu.com/s/1gRcJSkfSWbqVahmrp7f6jg 提取码:ah5e
顺便说一下,需要一个后端服务才可以呢,建议用弄得express在虚拟机或者自己的服务器启动下就可以了
其实解析json数据的方法有很多种类,具体可以参考这个 C# 解析 json