当前位置: 首页 > 知识库问答 >
问题:

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

叶坚
2023-03-14

我使用GraphQL. Client Nuget包调用需要Content-Type头的Graphql API。以下是我正在做的

设置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:“必须提供查询字符串。”}]}”

我做错了什么?如何正确设置内容类型标题。我尝试添加内容类型标题,如下所示,但它不允许提供

误用的标题名。确保请求头与HttpRequestMessage一起使用,响应头与HttpResponseMessage一起使用,内容头与HttpContent对象一起使用。

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

我试图寻找解决办法,但没有找到。当我通过Postman客户端传递请求标头中的内容类型标头时,同样的请求也会工作。

有人有同样的指针吗?

共有1个答案

钮出野
2023-03-14

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

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

请注意graphQLClient中的HttpClient。HttpClient。DefaultRequestHeaders。添加(“关键”、“价值”);

 类似资料:
  • 以下代码使用CORS协议完美地发送请求并接收响应。我想将内容类型标头更改为“应用程序/json”而不是“应用程序/x-www-form-urlencoded”。但是,当我将内容类型替换为“应用程序/json”时,请求失败。当我在浏览器中检查请求时,我可以看到内容类型标头已被删除而不是更改。 来自以上代码的请求 当“应用程序/x-web-form-urlencoded”被替换为“应用程序/json”

  • 我正在使用npm“同构获取”发送请求。我遇到的问题是无法设置请求头的内容类型。 我将内容类型设置为application/json,但是请求头被设置为text/plain。 当我在浏览器中检查请求时,内容类型为o: 有人能解释为什么我不能设置这个属性吗?

  • 我正在制作一个应用程序,允许我的用户在youtube频道上上传他们的视频。此频道来自一个合作伙伴帐户,并配置为电视频道,因此,它们具有“节目”。一个视频属于一个节目,一个节目可以有很多视频。因此,在创建所有信息包时,我创建了一个资产。根据 YouTube 内容 ID API 文档 资产的类型:此值确定您可以为资产设置的元数据字段。此外,某些API函数可能仅支持特定类型的资产。例如,组合资产可能比其

  • 我有以下代码: 当我运行它时,我看到Fiddler中的Content-Type头:

  • 我正在实现Apiary的其他同事制作的API。io,在Windows应用商店应用程序项目中。 它们显示了我必须实现的方法的示例: 在这个和其他一些方法中,我需要有一个带有我之前获得的令牌的标头。 如何将该授权标头添加到请求中?