c#——请求一个URL接口

.net 4.6环境下

.net4.6支持异步编程

命名空间:

using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

创建一个异步方法发送请求:

public static async Task<string> CallWebAPIAsync(string url, string method, string data)
{using (var client = new HttpClient()){HttpResponseMessage response;if (method.ToUpper() == "GET"){// 如果是GET请求response = await client.GetAsync(url);}else if (method.ToUpper() == "POST"){// 如果是POST请求var content = new StringContent(data, Encoding.UTF8, "application/json");response = await client.PostAsync(url, content);}else{throw new InvalidOperationException("Unsupported method: " + method);}// 确保HTTP请求成功response.EnsureSuccessStatusCode();// 读取并返回响应内容return await response.Content.ReadAsStringAsync();}
}

调用这个方法:

private async void button1_Click(object sender, EventArgs e){try{string data = "{\"id\":\"\",\"properties\":\"\"}";string url = "";string method="POST";//GETstring result = await callWebApiAsync(url,method, data);richTextBox1.Text = result;}catch (Exception ex){Console.WriteLine("发生错误: " + ex.Message);}}

一定要保证,调用时调用的方法满足异步操作。方法应该标记为async 并返回Task。

如果还有其他需求,比如返回的是一个标准的json格式字符串,那我们可以进行加工,转化为我们需要的json格式数据。

这里需要添加引用“Newtonsoft.Json”

首先找到返回的字符串的json格式,我们一般使用json.cn进行转化,选择“json转c#实体”

将返回结果复制进去即可得到json格式,将格式复制在代码中,例如

public class ResultItem{/// <summary>/// 姓名/// </summary>public string name{ get; set; }}public class Root{/// <summary>/// /// </summary>public List<ResultItem> result { get; set; }/// <summary>/// /// </summary>public string success { get; set; }/// <summary>/// /// </summary>public string errorMsg { get; set; }}

然后进行转化:

try{string data = "{\"id\":\"\",\"properties\":{ \name\": \"\"}}";string url = "";string method="POST";//GETstring result = await callWebApiAsync(url,method, data);var v = JsonConvert.DeserializeObject<Root>(result);v.result.ForEach(x => {if (x.name.StartsWith("name******")) {richTextBox1.Text += x.name+"\n";}});}catch (Exception ex){Console.WriteLine("发生错误: " + ex.Message);}

.net 4.0环境下

.net4.0没有原生的async、 await

.net不支持HttpClient

通常会使用webclient、httpwebrequest来进行HTTP请求。

命名空间:

using Newtonsoft.Json;
using System.Net;
using System.IO;

http请求:

private static string PostHTTP(string url, string data){var request = (HttpWebRequest)WebRequest.Create(url);request.Method = "POST";request.ContentType = "application/json";using (var streamWriter = new StreamWriter(request.GetRequestStream())){streamWriter.Write(data);}using (var response = (HttpWebResponse)request.GetResponse()){using (var reader = new StreamReader(response.GetResponseStream())){return reader.ReadToEnd();}}}

调用方法:

private void get(){try{string url = "";string data = "{\"id\":\"\",\"properties\":{ \"name\": \"\"}}";string result = PostHTTP(url, data);var v = JsonConvert.DeserializeObject<Root>(result);v.result.ForEach(x => {if (x.bl_item_item_id.StartsWith("5001*****")){richTextBox1.Text += x.name + "\n";}});}catch (Exception ex){MessageBox.Show(ex.Message, "出错", MessageBoxButtons.OK, MessageBoxIcon.Error);}}public class ResultItem{/// <summary>/// 姓名/// </summary>public string name { get; set; }}public class Root{/// <summary>/// /// </summary>public List<ResultItem> result { get; set; }/// <summary>/// /// </summary>public string success { get; set; }/// <summary>/// /// </summary>public string errorMsg { get; set; }}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/753333.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是React属性钻取(Prop Drilling)

一、介绍 在React开发过程中&#xff0c;状态管理是一个绕不开的话题。无论是新手还是有经验的开发者&#xff0c;都会面临如何有效管理组件状态的挑战。React为我们提供了多种状态管理方案&#xff0c;如直接的状态传递&#xff08;俗称"属性钻取"&#xff09;、Co…

那些年我们在数模竞赛中踩过的坑(附避坑指南)

数乐君猜测关注我们的同学大多都已经参加过数模竞赛了&#xff0c;可能有的同学对于数模竞赛的经验已经很丰富&#xff0c;或者即将要参加第一次数模竞赛&#xff0c;但要说起曾经在数模竞赛中踩的那些坑&#xff0c;也是有苦难言&#xff0c;那或许大家会好奇&#xff0c;数模…

【神经网络 基础知识整理】前向传播 反向传播

神经网络 基础知识整理 前向传播前向传播pytorch中的forward函数 反向传播 顾名思义&#xff0c;前向传播是从前往后传播的&#xff0c;从input层到output层的方向&#xff1a;前面一层的输出传入后一层作为输入&#xff0c;再对数据进行相应的处理&#xff0c;继续传下去&…

力扣Lc17--- 345.反转字符串中的元音字母(java版)-2024年3月18日

1.题目 2.知识点 注1&#xff1a; indexOf() 是 Java 中 String 类的方法之一&#xff0c;它用于查找指定字符或字符串在字符串中第一次出现的位置。如果找到了该字符或字符串&#xff0c;则返回它在字符串中的索引位置&#xff08;从0开始&#xff09;&#xff0c;如果没有找…

Qt的多线程类

主要介绍一些Qt的多线程类 QThread QThread 是 Qt 提供的基本的多线程类&#xff0c;它允许创建自定义的线程。可以继承 QThread 类&#xff0c;并重写其 run() 方法&#xff0c;在 run() 方法中编写线程要执行的代码。以下是一个简单的示例&#xff1a; #include <QThre…

03、判断和循环

三、判断与循环 文章目录 三、判断与循环顺序结构分支结构If语句在程序中就是用来判断的switch 循环结构forwhiledo while 顺序结构 顺序结构是Java程序默认的执行流程&#xff0c;按照代码的先后顺序&#xff0c;从上到下依次执行。 分支结构 If语句在程序中就是用来判断的 …

C语言 实用调试技巧

我们的博客已经更新到了数据结构&#xff0c;但是当我在深耕数据结构时我发现我在C语言是遗漏了一个重要的东西&#xff0c;那就是C语言的使用调试技巧。这篇博客对数据结构非常重要&#xff0c;请大家耐心观看。 1. 什么是bug&#xff1f; 第一次被发现的导致计算机错误的飞蛾…

抖音小店怎么高效的对接达人?分享四年老运营的经验,可记笔记!

大家好&#xff0c;我是电商糖果 抖音现在最火的卖货方式&#xff0c;依旧是达人带货&#xff0c;也就是商家和达人合作模式。 有很多刚开店的朋友找达人合作总是失败&#xff0c;不知道什么原因。 其实找达人合作是需要技巧的&#xff0c;糖果做抖音小店已经四年了&#xf…

Vue2 基础三组件化开发

代码下载 组件 (Component) 是 Vue.js 最强大的功能之一&#xff0c;组件可以扩展 HTML 元素&#xff0c;封装可重用的代码。 组件注册 全局注册&#xff1a; Vue.component(组件名称, {data: 组件数据,template: 组件模板内容});// 全局组件Vue.component(button-counter, …

在AI创业热潮下,如何抓住AI赚钱机会,实现人生逆袭

随着人工智能技术的迅猛发展,AI创业热潮正席卷全球。这不仅为科技领域的专业人士提供了无限的商机,也为普通人开辟了全新的赚钱途径。本文将为您揭示在AI创业热潮下,普通人如何抓住AI赚钱机会,实现人生逆袭,同时探讨哪些行业适合应用AI技术。 一、普通人如何抓住AI赚钱机…

前端基础篇-快速了解 Vue 前端框架(Vue 指令)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 Vue 概述 2.0 Vue 指令 2.1 指令 - v-bind 2.2 指令 - v-model 2.3 指令 - v-on 2.4 指令 - v-if、v-else-if、v-else 2.5 指令 - v-show 2.6 指令 - v-for 3.0 生…

实现C++自定义的String类

一、简介 采用了COW写时复制的方式实现&#xff0c;即在每个String类数据域之前用了4个字节的空间进行引用计数。通过拷贝构造函数或者赋值运算符函数进行赋值时不会重新开辟空间&#xff0c;只会对引用计数加一&#xff0c;当有修改操作时&#xff0c;才会重新开辟新的空间&a…

es文档操作命令

文档操作 documents 创建数据&#xff08;put&#xff09; 向 user 索引下创建3条数据 PUT /user/_doc/1 {"name":"zhangsan","age":18,"sex":"男","info":"一顿操作猛如虎&#xff0c;一看工资2500"…

码云简化版使用教程

码云简化版使用教程 ①创建本地项目 ②在本地项目根目录下创建git相关目录及文件 ③在码云上创建新的仓库 ④在本地项目中配置仓库地址&#xff0c;提交项目内容 下面直接从第二步开始讲解 在本地项目根目录下创建git相关目录及文件 1、打开项目根目录&#xff0c;进入cmd界…

Linux应用 线程同步之互斥锁

1、概念 1.1 定义 互斥锁&#xff08;Mutex&#xff09;&#xff0c;又称互斥型信号量&#xff0c;是一种特殊的二值性信号量&#xff0c;主要用于实现对共享资源的独占式处理。任意时刻&#xff0c;互斥锁的状态只有两种&#xff1a;开锁或闭锁。当有任务持有时&#xff0c;…

旧衣服回收小程序开发,“互联网+”模式下巨大收益

近年来&#xff0c;在人们生活水平的提高下&#xff0c;旧衣物随之增加&#xff0c;如何处理旧衣服成为了当下大众所困扰的问题。 当下&#xff0c;旧衣回收行业已经成为了一个新的热门行业&#xff0c;我国人口众多&#xff0c;旧衣物的市场规模也在不断扩大&#xff0c;市场…

【QT入门】qmake和cmake的简单区别

声明&#xff1a;该专栏为本人学习Qt知识点时候的笔记汇总&#xff0c;希望能给初学的朋友们一点帮助(加油&#xff01;) 往期回顾&#xff1a; 【QT入门】Windows平台下 QT的编译过程-CSDN博客 【QT入门】VS2019QT的开发环境配置-CSDN博客 【QT入门】VS2019和QT Creator如何添…

基于springboot+vue的房屋交易平台

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

代码随想录算法训练营Day48 | LeetCode121. 买卖股票的最佳时机、LeetCode122.买卖股票的最佳时机II

LeetCode121. 买卖股票的最佳时机 动规五部曲&#xff1a; 1、dp[i][0]:在第i天持有股票的最大收入&#xff1b;dp[i][1]:在第i天不持有股票的最大收入。 2、递推公式&#xff1a;第i天持有股票&#xff0c;有两种情况&#xff1a;前一天已经持有&#xff0c;当天刚买入&#…

Greetings

Problem - 1915F - Codeforces 题意 给一些(l,r)找到所有能够包含(l,r)的数目 引入 也就是找逆序对个数 要用到归并排序中的思想&#xff1a; //https://www.luogu.com.cn/problem/P1216 #include<iostream> #include<cstdio> #include<stack> #include…