c#调用Restful API


一、概述

System.Net命名空间包含了 HttpWebRequestHttpWebResponse 类的获取从Web服务器和基于HTTP的Web服务的数据。通常你还需要添加一个引用System.Web,这将给你访问HttpUtility类,它提供的方法对HTML和URL编码和解码的文本字符串。 虽然一些网络服务也可以返回其他格式的数据,如JSON和序列化的PHP,但最容易利用的还是XML,因为在.NET Framework广泛支持这种格式的读取和操作。

二、获取数据

1、以Get方式获取

using System;
using System.IO;
using System.Net;
using System.Text;

// Create the web request
HttpWebRequest request = WebRequest.Create("http://developer.yahoo.com/") as HttpWebRequest;

// Get response
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
// Get the response stream
StreamReader reader = new StreamReader(response.GetResponseStream());

// Console application output
Console.WriteLine(reader.ReadToEnd());
}

2、以Post方式获取

using System.Web;

Uri address = new Uri("http://api.search.yahoo.com/ContentAnalysisService/V1/termExtraction");

// Create the web request
HttpWebRequest request = WebRequest.Create(address) as HttpWebRequest;

// Set type to POST
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";

// Create the data we want to send
string appId = "YahooDemo";
string context = "Italian sculptors and painters of the renaissance"
+ "favored the Virgin Mary for inspiration";
string query = "madonna";

StringBuilder data = new StringBuilder();
data.Append("appid=" + HttpUtility.UrlEncode(appId));
data.Append("&context=" + HttpUtility.UrlEncode(context));
data.Append("&query=" + HttpUtility.UrlEncode(query));

// Create a byte array of the data we want to send
byte[] byteData = UTF8Encoding.UTF8.GetBytes(data.ToString());

// Set the content length in the request headers
request.ContentLength = byteData.Length;

// Write data
using (Stream postStream = request.GetRequestStream())
{
postStream.Write(byteData, 0, byteData.Length);
}

// Get response
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
// Get the response stream
StreamReader reader = new StreamReader(response.GetResponseStream());

// Console application output
Console.WriteLine(reader.ReadToEnd());
}

三、HTTP 验证请求

有些朋友在调用Restful Api时,可能要提供用户名和密码进行Http身份验证,这里我们可以通过为请求增加一个 NetworkCredentials 实例来完成.

// Create the web request
HttpWebRequest request
= WebRequest.Create("https://api.del.icio.us/v1/posts/recent") as HttpWebRequest;

// Add authentication to request
request.Credentials = new NetworkCredential("username", "password");

// Get response
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
// Get the response stream
StreamReader reader = new StreamReader(response.GetResponseStream());

// Console application output
Console.WriteLine(reader.ReadToEnd());
}

C#调用 FastAPI(一个基于 Python 的 web 框架)通常不是直接操作的,因为它们分别属于不同的语言和运行环境。FastAPI 是用于后端服务开发的,而 C# 更常用于.NET 应用。然而,如果你有一个暴露了 RESTful API 的 FastAPI 服务,并希望从 C# 客户端发起请求,你可以使用 HTTP 客户端库,比如 `HttpClient` 或者第三方库如 `RestSharp`。 这里是一个简单的示例,展示如何使用 `HttpClient` 来调用 FastAPI: ```csharp using System; using System.Net.Http; class Program { static readonly HttpClient client = new HttpClient(); static async Task Main(string[] args) { // 假设你的 FastAPI 服务器地址为 http://localhost:8000/ string apiUrl = "http://localhost:8000/api/your-endpoint"; try { // 发送 GET 请求 HttpResponseMessage response = await client.GetAsync(apiUrl); if (response.IsSuccessStatusCode) { // 读取响应内容 string responseBody = await response.Content.ReadAsStringAsync(); Console.WriteLine(responseBody); } else { Console.WriteLine($"Error: {response.StatusCode}"); } } catch (Exception ex) { Console.WriteLine($"Error: {ex.Message}"); } } } ``` 在这个例子中,你需要将 `apiUrl` 替换为你实际的 FastAPI 接口路径。如果 FastAPI 提供 JSON 数据,你会处理返回的 `HttpResponseMessage` 并解析 JSON。 相关问题: 1. 在 C# 中,除了 `HttpClient`,还有哪些库可用于调用 FastAPI? 2. 如果 FastAPI 有身份验证或授权机制,C# 如何处理这些? 3. 如何在 C# 中发送 POST、PUT 或 DELETE 类型的请求给 FastAPI
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值