gpt4 book ai didi

c# - SendAsync() 返回 422 不可处理的实体

转载 作者:行者123 更新时间:2023-12-04 10:55:15 24 4
gpt4 key购买 nike

我用 写了一个函数获取 Async() 工作正常,但现在我想使用 扩展它发送 Async() 代替 [用于 POSTing 和 sofourth];但是我的 SendAsync() 版本没有按预期工作,它返回一个 422 不可处理的实体。 (没有 IDE atm;抱歉有轻微的错别字)

在里面

var Client = new HttpClient{
BaseAddress = "https://example.com"
}
Client.DefaultRequestHeaders.UserAgent.ParseAdd("Project/1.0 (blah blah)");

...

工作 获取 异步()
public async Task<string> GetResponse(string user, string pass){
var uri = $"/user/login.json?name={user}&password={pass}";
var req = await Client.GetAsync(uri);
return req.Content.Request.Content.ReasStringAsync();
}

不工作 发送 异步()
public async Task<string> GetResponse(string page, Dictionary<string, string> args){
//assume page = "/user/login.json" and args == {"username", "user"},{"password", "pass"}
try{
var req = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri(page),
Content = new FormUrlEncodedContent(args),
}

var response = await Client.SendAsync(req);
if(response.IsSuccessStatusCode){
return await response.Content.ReasStringAsync();
return null;
}
catch{ return null }
}

注意:与 422 一起,响应仍然包含 json 声明“无效的身份验证 token !”

GetAsync() 在做什么而 SendAsync() 没有做什么?

最佳答案

您的 Send 在 HTTP GET 请求的 BODY 中包含内容。

HTTP GET 请求不应该有 BODY,并且有些服务器不会处理此类请求。

将字典转换为 QueryString并将其包含在 URI 中。

public async Task<string> GetResponse(string page, Dictionary<string, string> args) {
//assume page = "/user/login.json" and args == {"username", "user"},{"password", "pass"}
try {
QueryString queryString = QueryString.Create(args);
var uri = new Uri(page + queryString.ToString());
var request = new HttpRequestMessage(HttpMethod.Get, uri);
var response = await Client.SendAsync(request);
if(response.IsSuccessStatusCode){
return await response.Content.ReadAsStringAsync();
return string.Empty;
} catch { return string.Empty; }
}

关于c# - SendAsync() 返回 422 不可处理的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59242020/

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