首页 > 解决方案 > 进行 cURL GET 调用是 C# 和 .Net

问题描述

我过去从未使用过 cURL。我非常精通 c# 和 .net 以及 javascript/jquery,但我正在尝试使用下面的 cURL 调用并通过 c# 和 MVC 将其转换为 HttpClient 请求,然后解析结果并在页面上显示它们的样式。我永远不会向 API 上传或发布任何内容,只检索活动数据并在 Web 端解析它。

电话是;

curl -k -H "Content-Type: application/json"
-H 'x-mjf-organization-id: 9'
-H 'x-mjf-api-key: 00000-9999-22222-2222-222'
https://test-site.info.com//v1/info

根据第 3 方主机提供的组织 ID 和 API 密钥,我收到的所有数据都将独立于我的组织。我真的不确定从哪里开始,我一直在挖掘很多关于 cURL 的其他帖子,但大多数都是用于上传和发布数据,而不仅仅是检索和解析。我将不胜感激任何好的参考资料。谢谢你

标签: c#.netrestcurl

解决方案


这应该或多或少等同于:

using var client = new HttpClient();
using var request = new HttpRequestMessage(HttpMethod.Get, "");
//this header doesn't really make sense for a GET request...
//request.Headers.Add("Content-Type", "application/json");
request.Headers.Add("x-mjf-organziation-id", "9");
request.Headers.Add("x-mjf-api-key", "...");

var response = await client.SendAsync(request);

如果-k确实有必要,您可以设置全局证书处理,忽略所有证书错误,像这样

ServicePointManager.ServerCertificateValidationCallback += (s, cert, chain, err) => true;

注意:您应该仅出于测试目的而不是在生产中执行此操作。

如果您只想为此禁用证书检查,HttpClient您可以通过使用以下配置创建它来配置它HttpClientHandler

var handler = new HttpClientHandler();
handler.ServerCertificateCustomValidationCallback = (s, cert, chain, err) => true;
using var client = new HttpClient(handler);
[...]

推荐阅读