Flurl API 未发送 POST 请求
Flurl API not sending POST request
我需要 post webhook 信息到我的数据库中。这很简单,我可以做到,但我在更新已插入数据库的行项目时遇到问题。我想我可以更改 post 我必须放置的位置,但这不会添加新条目。我试图用这段代码做一个解决方案。
var responseString7 = await url
.GetAsync()
.ConfigureAwait(true);
if (responseString7.IsSuccessStatusCode)
{
var responseString = await url
.WithHeader("Accept", "application/json")
.PutJsonAsync(new
{
trackingNumber = stuff.result.tracking_code,
EPTrackingStatus = stuff.result.status,
EPStatusDetails = stuff.result.status_detail,
EPUpdatedAt = stuff.result.updated_at
})
.ReceiveString();
}
else
{
var responseString3 = await "url you cant see"
.WithHeader("Accept", "application/json")
.PostJsonAsync(new
{
trackingNumber = stuff.result.tracking_code,
EPTrackingStatus = stuff.result.status,
EPStatusDetails = stuff.result.status_detail,
EPUpdatedAt = stuff.result.updated_at
})
.ReceiveString();
此解决方案将 PUT 而不是 POST。有更简单的方法吗?
Flurl behaves differently (by default) than HttpClient 关于错误。如果它遇到非 2xx 响应,则会抛出。所以它没有到达你的 else
块,因为首先抛出异常。修复代码的最简单方法是禁用该行为:
url.AllowAnyHttpStatus().GetAsync();
在下一次调用中,如果两种情况(URL、header、数据)中除了动词之外的所有内容都相同,您可以考虑使用 Flurl 的 [=13] 稍微简化一下=],您可以在其中将 HTTP 动词指定为变量。
var method = getResponse.IsSuccessStatusCode ? HttpMethod.Put : HttpMethod.Post;
var responseString3 = await url
.WithHeader(...)
.SendJsonAsync(method, new { ... })
.ReceiveString();
我需要 post webhook 信息到我的数据库中。这很简单,我可以做到,但我在更新已插入数据库的行项目时遇到问题。我想我可以更改 post 我必须放置的位置,但这不会添加新条目。我试图用这段代码做一个解决方案。
var responseString7 = await url
.GetAsync()
.ConfigureAwait(true);
if (responseString7.IsSuccessStatusCode)
{
var responseString = await url
.WithHeader("Accept", "application/json")
.PutJsonAsync(new
{
trackingNumber = stuff.result.tracking_code,
EPTrackingStatus = stuff.result.status,
EPStatusDetails = stuff.result.status_detail,
EPUpdatedAt = stuff.result.updated_at
})
.ReceiveString();
}
else
{
var responseString3 = await "url you cant see"
.WithHeader("Accept", "application/json")
.PostJsonAsync(new
{
trackingNumber = stuff.result.tracking_code,
EPTrackingStatus = stuff.result.status,
EPStatusDetails = stuff.result.status_detail,
EPUpdatedAt = stuff.result.updated_at
})
.ReceiveString();
此解决方案将 PUT 而不是 POST。有更简单的方法吗?
Flurl behaves differently (by default) than HttpClient 关于错误。如果它遇到非 2xx 响应,则会抛出。所以它没有到达你的 else
块,因为首先抛出异常。修复代码的最简单方法是禁用该行为:
url.AllowAnyHttpStatus().GetAsync();
在下一次调用中,如果两种情况(URL、header、数据)中除了动词之外的所有内容都相同,您可以考虑使用 Flurl 的 [=13] 稍微简化一下=],您可以在其中将 HTTP 动词指定为变量。
var method = getResponse.IsSuccessStatusCode ? HttpMethod.Put : HttpMethod.Post;
var responseString3 = await url
.WithHeader(...)
.SendJsonAsync(method, new { ... })
.ReceiveString();