使用GraphQL.client使用API时添加内容类型头



我正在使用GraphQL.client Nuget包来调用GraphQL API,它需要Content-Type头。以下是我正在做的

设置GraphQL选项。注意,我已经设置了选项。介质类型

GraphQLHttpClientOptions options = new GraphQLHttpClientOptions();
options.MediaType = "application/json";
options.EndPoint = new Uri( "https://sample.api.com/graphql");

初始化客户端和授权头

var graphQLClient = new GraphQLHttpClient(options, new NewtonsoftJsonSerializer());         
graphQLClient.HttpClient.DefaultRequestHeaders.Add("Authorization", "JWT <token>");

GraphQL查询

var projectsQuery = new GraphQLRequest
{
Query = @"
query {
projects {
name
}
}"
};          

调用API并检索响应结果

var graphQLResponse = await graphQLClient.SendQueryAsync<ProjectResponse>(projectsQuery);            
var projects = graphQLResponse.Data.Projects;

然而,我收到了错误"{"errors":[{"message":"Must provide query string."}]}"的错误请求

我在这里做错了什么?如何正确设置内容类型标头。我尝试添加内容类型标题如下,但它不允许给出

标题名称被滥用。确保请求标头与一起使用HttpRequestMessage、具有HttpResponseMessage的响应标头,以及具有HttpContent对象的内容标头。

graphQLClient.HttpClient.DefaultRequestHeaders.Add("content-type", "application/json");

我试着寻找解决方案,但没有找到。当我通过Postman客户端在请求标头中传递内容类型标头时,同样的请求也会起作用。

有人在上面有指针吗?

如果有人还在寻找答案,请在下面找到。

var graphQLClient = new graphQLHttpClient("https://www.example.com/graphql", new NewtonsoftJsonSerializer());
graphQLClient.HttpClient.DefaultRequestHeaders.Add("key", "value");

请注意graphQLClient中的HttpClientHttpClient。DefaultRequestHeaders。加("键"、"值"(;

最新更新