You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中使用GraphQLHttpClient调用Rubrik GraphQL API返回null数据的问题及解决方法

C#中使用GraphQLHttpClient调用Rubrik GraphQL API返回null数据的问题及解决方法

最近我在尝试用C#的GraphQL客户端库(包括GraphQL.Client.Abstractions、Client.Serializer.SystemTextJson等)调用Rubrik备份系统的GraphQL API,感觉离成功只差一步,但最后返回的数据一直是null,折腾了好久终于找到了解决办法,分享给大家:

我的初始配置与代码

首先我配置了GraphQLHttpClient的选项:

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

接着创建客户端并添加认证头和其他请求头:

GraphQLHttpClient graphClient = new GraphQLHttpClient(options, new GraphQL.Client.Serializer.SystemTextJson.SystemTextJsonSerializer());
graphClient.HttpClient.DefaultRequestHeaders.Add("Authorization", "Bearer " + token);
graphClient.HttpClient.DefaultRequestHeaders.Add("Accept", "*/*");
graphClient.HttpClient.DefaultRequestHeaders.Add("Cache-Control", "no-cache");

然后定义了GraphQL查询语句:

string query = @"query HypervServersQuery($input: QueryHypervHostInput!) {
            hypervServers(input: $input) {
                data {
                    hostname
                    serverName
                    id
                    __typename
                }
                __typename
            }
        }";

以及对应的变量:

var variables_ = new
{
    name = "xxx",
    primaryClusterId = "xxx",
    clusterUuid = "xxx"
};

var variables = new
{
    input = variables_
};

最后发送查询请求,一开始我是这么写的:

GraphQLRequest query = new GraphQLRequest { Query = query , Variables = variables };
var result = graphClient.SendQueryAsync<DataResponse>(query).GetAwaiter().GetResult(); 

遇到的问题

请求的状态码是OK(之前还遇到过Bad Request,调整格式后解决了),但返回的result.Data一直是null。我确认了同样的查询语句和变量在PowerShell里是能正常返回数据的,所以问题肯定出在C#的处理逻辑上。

解决方法

最后发现问题出在返回数据的反序列化环节——我自定义的DataResponse类和Rubrik API返回的实际数据结构可能存在不匹配的情况(比如嵌套字段、__typename这类字段的处理)。换成dynamic类型来接收响应数据后,就可以正确获取到返回的内容了:

GraphQLResponse<dynamic> graphQLResponse = graphQLClient.SendQueryAsync<dynamic>(query).GetAwaiter().GetResult();

备注:内容来源于stack exchange,提问作者Stephen Van Wiele

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 10:08:10