gpt4 book ai didi

c# - 写入第三方 API

转载 作者:行者123 更新时间:2023-11-30 15:32:42 26 4
gpt4 key购买 nike

我正在尝试编写 JSON.Net 查询以将记录写入 (POST) 到 API 的 asp.net 应用程序。但是,我在尝试弄清楚如何格式化 json 字符串以便将其传递给 API 时遇到了麻烦。

供应商支持页面上的“示例”具有以下标题信息。

POST /extact/api/profiles/114226/pages/423833/records HTTP/1.1
Host: server.iPadDataForm.com
Authorization: Bearer 6bfd44fbdcdddc11a88f8274dc38b5c6f0e5121b
Content-Type: application/json
X-IFORM-API-REQUEST-ENCODING: JSON
X-IFORM-API-VERSION: 1.1

问题:
如果我使用的是 JSON.Net,如何获取传递给 API 的 header 信息?我看过json.net website , 但还没有任何效果。

最佳答案

JSON.NET 是用于将 .NET 对象序列化和反序列化为 JSON 的库。它与发送 HTTP 请求无关。你可以使用 WebClient为此目的。

例如,调用 API 的方式如下:

string url = "http://someapi.com/extact/api/profiles/114226/pages/423833/records";
using (var client = new WebClient())
{
client.Headers[HttpRequestHeader.Authorization] = "Bearer 6bfd44fbdcdddc11a88f8274dc38b5c6f0e5121b";
client.Headers[HttpRequestHeader.ContentType] = "application/json";
client.Headers["X-IFORM-API-REQUEST-ENCODING"] = "JSON";
client.Headers["X-IFORM-API-VERSION"] = "1.1";

MyViewModel model = ...
string jsonSerializedModel = JsonConvert.Serialize(model); // <-- Only here you need JSON.NET to serialize your model to a JSON string

byte[] data = Encoding.UTF8.GetBytes(jsonSerializedModel);
byte[] result = client.UploadData(url, data);

// If the API returns JSON here you could deserialize the result
// back to some view model using JSON.NET
}

UploadData方法将向远程端点发送 HTTP POST 请求。如果你想处理异常,你可以把它放在 try/catch block 中并捕获 WebException ,如果远程端点返回一些非 2xx HTTP 响应状态码。

在这种情况下,您可以通过以下方式处理异常并读取远程服务器响应:

try
{
byte[] result = client.UploadData(url, data);
}
catch (WebException ex)
{
using (var response = ex.Response as HttpWebResponse)
{
if (response != null)
{
HttpStatusCode code = response.StatusCode;
using (var stream = response.GetResponseStream())
using (var reader = new StreamReader(stream))
{
string errorContent = reader.ReadToEnd();
}
}
}
}

请注意如何在 catch 语句中确定服务器返回的确切状态代码以及响应负载。您还可以提取响应 header 。

关于c# - 写入第三方 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18470556/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com