为啥我在尝试从 C# 处理程序发布 GraphQL 查询时收到错误请求?
Posted
技术标签:
【中文标题】为啥我在尝试从 C# 处理程序发布 GraphQL 查询时收到错误请求?【英文标题】:Why am I getting Bad Request trying to POST a GraphQL query from a C# handler?为什么我在尝试从 C# 处理程序发布 GraphQL 查询时收到错误请求? 【发布时间】:2022-01-17 23:32:21 【问题描述】:我想使用 Web 服务或处理程序将突变发送到 GraphQL API。我有 GraphQL 代码在 Postman 和一个控制台应用程序中工作。但是每当我在服务或处理程序中尝试类似的代码时,我所能得到的只是一个 400 错误请求。目前正在尝试使用 HttpTaskAsyncHandler:
public class AsyncHandler : HttpTaskAsyncHandler
public override async Task ProcessRequestAsync (HttpContext context)
context.Response.ContentType = "text/plain";
string result = await GoSC();
context.Response.Write(result);
public async Task<string> GoSC()
// Define the cancellation token.
CancellationTokenSource source = new CancellationTokenSource();
CancellationToken cancellationToken = source.Token;
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "*******");
client.DefaultRequestHeaders.Add("User-Agent", "MyApp");
string uri = "https://theAPI.com/graphql";
using (var request = new HttpRequestMessage(HttpMethod.Post, uri))
var queryObject = new
query = @"query querycurrentOrgId"
;
using (var stringContent = new StringContent(
JsonConvert.SerializeObject(queryObject),
System.Text.Encoding.UTF8,
"application/json"))
request.Content = stringContent;
using (var response = await client
.SendAsync(request,
HttpCompletionOption.ResponseContentRead,
cancellationToken)
.ConfigureAwait(false))
response.EnsureSuccessStatusCode();
//string resString = response.StatusCode.ToString();
string resString = await response.Content.ReadAsStringAsync();
//string resString = await response.Content
return resString;
我已经尝试了从直接字符串到序列化 Json 的所有 HttpRequestMessage 内容。总是错误的请求。 任何智慧之言将不胜感激! 杰瑞
【问题讨论】:
【参考方案1】:原来我们在 Web 服务器上运行了一个 http 到 https 的重定向,它以某种方式干扰了 API。需要将处理程序移到我自己的电脑上才能弄清楚。
【讨论】:
以上是关于为啥我在尝试从 C# 处理程序发布 GraphQL 查询时收到错误请求?的主要内容,如果未能解决你的问题,请参考以下文章