在 .NET 中使用 WebClient 发送 PATCH 请求
Sending PATCH request using WebClient in .NET
我有一个较旧的 ASP.NET WebForms 站点。我正在尝试使用 WebClient
将 PATCH
请求发送到 REST API:
using (WebClient client = new WebClient())
{
client.Headers[HttpRequestHeader.Authorization] = "Bearer " + authToken;
try
{
responseString = Encoding.UTF8.GetString(client.UploadValues(endpoint, "PATCH", body));
}
catch (Exception e)
{
return e;
}
}
在此代码段中,endpoint
是我要 PATCH
访问的 URI,body
是 NameValueCollection
.
这给我一个 HTTP 400“错误请求”错误。如果我在异常中向下钻取,则表明违反了协议。我尝试为 content-type 添加 header,但这没有帮助。
同样的代码 对 POST
请求有效,这就是我成功获取访问令牌的方式。但它不适用于 PATCH
。有什么方法可以使用 WebClient
发送有效的 PATCH
请求?
我知道那里还有其他库,但如果可能的话,我希望在使用 WebClient
时与此 class 中的其余代码保持一致。如果我必须切换到其他东西,我也想更新其余代码。
更新
是的,API 确实支持 PATCH
。这是 Microsoft Graph API 并且 PATCH 与 Postman 配合得很好。
看起来不错。如果 API 支持 PATCH,您应该会收到回复。
你能检查一下 PATCH 是否在 API 上实现了吗?
另一种可能是您违反了 PATCH 方法中应用的某些验证规则。
我使用 UploadString
方法让它工作,如下所示:
using (WebClient client = new WebClient())
{
client.Headers[HttpRequestHeader.Authorization] = "Bearer " + authToken;
try
{
client.Headers[HttpRequestHeader.ContentType] = "application/json";
responseString = client.UploadString(endpoint, method, body);
}
catch (Exception e)
{
return e;
}
}
其中 body
是 JSON 格式的字符串,而不是我最初尝试的 NameValueCollection
。我不确定是否有更好的方法来执行此操作,但它现在似乎有效。
我有一个较旧的 ASP.NET WebForms 站点。我正在尝试使用 WebClient
将 PATCH
请求发送到 REST API:
using (WebClient client = new WebClient())
{
client.Headers[HttpRequestHeader.Authorization] = "Bearer " + authToken;
try
{
responseString = Encoding.UTF8.GetString(client.UploadValues(endpoint, "PATCH", body));
}
catch (Exception e)
{
return e;
}
}
在此代码段中,endpoint
是我要 PATCH
访问的 URI,body
是 NameValueCollection
.
这给我一个 HTTP 400“错误请求”错误。如果我在异常中向下钻取,则表明违反了协议。我尝试为 content-type 添加 header,但这没有帮助。
同样的代码 对 POST
请求有效,这就是我成功获取访问令牌的方式。但它不适用于 PATCH
。有什么方法可以使用 WebClient
发送有效的 PATCH
请求?
我知道那里还有其他库,但如果可能的话,我希望在使用 WebClient
时与此 class 中的其余代码保持一致。如果我必须切换到其他东西,我也想更新其余代码。
更新
是的,API 确实支持 PATCH
。这是 Microsoft Graph API 并且 PATCH 与 Postman 配合得很好。
看起来不错。如果 API 支持 PATCH,您应该会收到回复。
你能检查一下 PATCH 是否在 API 上实现了吗?
另一种可能是您违反了 PATCH 方法中应用的某些验证规则。
我使用 UploadString
方法让它工作,如下所示:
using (WebClient client = new WebClient())
{
client.Headers[HttpRequestHeader.Authorization] = "Bearer " + authToken;
try
{
client.Headers[HttpRequestHeader.ContentType] = "application/json";
responseString = client.UploadString(endpoint, method, body);
}
catch (Exception e)
{
return e;
}
}
其中 body
是 JSON 格式的字符串,而不是我最初尝试的 NameValueCollection
。我不确定是否有更好的方法来执行此操作,但它现在似乎有效。