封装请求和post请求

封装请求

创建一个Button;项目属性里输出类型改成“控制台应用程序”

public partial class Form1 : Form
{
private int a = 0;
public Form1()
{
    InitializeComponent();

    // 创建task任务对象
    Task t = new Task(() =>
    {
        a = 10;
        //异步的任务 如果直接使用全局变量,在task外面使用全局的
        //时候,这个全局还是初始值,不是此处赋的值,原因此处代码是属于
        //异步的,下面Console.WriteLine(a);执行在a=10的前面的,所以a还是
        //0

    });
    t.Start();//开启任务
    Console.WriteLine(a);   
}
public Task<string> F1()
{
    Task<string> t1 = Task.Run(() =>
    {
        string s1 = "150多完寸头渔民赶赴黄岩岛,备注不会撒网,装满搬砖";
        return s1;
    });

    return t1;
}

}

运行时控制台会显示s1字符串内容;

双击按钮点击事件

private async void button1_Click(object sender, EventArgs e)
{
   string s1 =   await F1();
   Console.WriteLine(s1);
    //异步任务的里面数据怎么放在外边去使用?例如Task的异步回调函数里面的数据怎么使用?
    //1 不能把异步任务呢里面的数据定义成全局的
    //2 把异步任务里面数据通过return返回出去,但是使用异步任务,在异步任务前面添加await关键字
    //在函数前面添加async
     //如果想使用异步函数中数据的时候,可以通过返回值返回值出去,
     //使用异步任务的时候通过await保证异步执行完再去取值,await只能使用使用在
    //async函数中
    Task<int> t2 = Task.Run(() =>
    {
        int aa = 100000;
        return aa;
    });
    int aaa = await t2;// await等待t2异步任务执行完了再去执行下面代码
                       //async 异步函数
    Console.WriteLine(aaa);

 string s =  await HttpGetASync("https://www.kuaikanmanhua.com/webs/comic-next/375872");
    
    Console.WriteLine(s);
}


//把请求方法封装在异步函数中,
 private Task<string> HttpGetASync(string url)
{
    Task<string> t = Task.Run(() =>
    {
        WebRequest request = WebRequest.Create(url);
        request.Method = "GET";
        WebResponse response = request.GetResponse();
        Stream st=  response.GetResponseStream();
        StreamReader sr = new StreamReader(st);
        string data = sr.ReadToEnd();
        st.Close();
        sr.Close();
        return data;
    });
    return t;
}

post请求:

控件:两个输入框textbox,一个按钮button,展示Label

按钮点击事件

//1 创建请求对象
WebRequest request = WebRequest.Create("http://192.168.113.74:3000/register");
//2 设置post请求
request.Method = "POST";
//3 设置超时时间
request.Timeout = 30000;
//4 设置请求内容类型 请求内容类型主要是针对传递是普通数据和传递图片而设置的,
request.ContentType = "application/x-www-form-urlencoded"; //主要针对传递数据是字符串格式
//5 设置请求数据
string data = "name="+this.textBox1.Text+"&psw="+this.textBox2.Text;//组织写入数据
byte[] bs = Encoding.UTF8.GetBytes(data);//转成字节数据
Stream postStream = request.GetRequestStream();// 传进传递数据流
// write方法 参数1字节数组,把字符串可以转成字节数组
// 参数2从哪个地方开始写入,从头开始写,写0,
// 参数3 写入的长度
postStream.Write(bs, 0, bs.Length);//写入数据
//6 获取响应
WebResponse response = request.GetResponse();//获取响应
Stream st = response.GetResponseStream(); //响应流
StreamReader sr = new StreamReader(st);//创建读取工具
string data1 = sr.ReadToEnd();//获取响应字符串
st.Close();
sr.Close();
this.label3.Text = data1;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值