2

Using GraphQL version 2.1.0, I can't create the object: GraphQLHttpClient.

I immediately get the following error:

System.AggregateException
  HResult=0x80131500
  Message=One or more errors occurred. (no implementation of "GraphQL.Client.Abstractions.Websocket.IGraphQLWebsocketJsonSerializer" found)
  Source=System.Private.CoreLib
  StackTrace:
   at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
   at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
   at System.Threading.Tasks.Task.Wait()
   at (...)Program.Main(String[] args) in (..)\Program.cs:line 22

  This exception was originally thrown at this call stack:
    GraphQL.Client.Abstractions.GraphQLJsonSerializerExtensions.EnsureAssigned<TSerializerInterface>(TSerializerInterface)
    GraphQL.Client.Http.GraphQLHttpClient.GraphQLHttpClient(GraphQL.Client.Http.GraphQLHttpClientOptions, System.Net.Http.HttpClient)
    GraphQL.Client.Http.GraphQLHttpClient.GraphQLHttpClient(GraphQL.Client.Http.GraphQLHttpClientOptions)
    GraphQL.Client.Http.GraphQLHttpClient.GraphQLHttpClient(System.Action<GraphQL.Client.Http.GraphQLHttpClientOptions>)
    GraphQL.Client.Http.GraphQLHttpClient.GraphQLHttpClient(System.Uri)
    GraphQL.Client.Http.GraphQLHttpClient.GraphQLHttpClient(string)
    (...)Program.MainAsync() in Program.cs

Inner Exception 1:
InvalidOperationException: no implementation of "GraphQL.Client.Abstractions.Websocket.IGraphQLWebsocketJsonSerializer" found

Code:

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.IO;
using System.Net;
using System.Text;
using GraphQL;
using GraphQL.Client;
using System.Threading.Tasks;
using System.Collections.Generic;
using GraphQL.Client.Abstractions;
using GraphQL.Client.Http;

namespace OW_1
{
    class Program
    {

        static void Main(string[] args)
        {
            MainAsync().Wait();
        }

        static async Task MainAsync()
        {
            var graphQLClient = new GraphQLHttpClient("X");

        }
    }
}

It's crashing on line with GraphQLHttpClient. Before, I've used 1.0.3 (with: GraphQLClient class) and it worked.

Walczak Jakub
  • 92
  • 1
  • 10
  • 1
    This issue was presented in a GitHub issue as well. It'll be fixed in the next release, but there is a workaround for manually setting the JSON serializer until then (or you could probably revert to 2.0.0) -- here's the GitHub issue https://github.com/graphql-dotnet/graphql-client/issues/171 – Emily Mar 02 '20 at 21:27
  • Adding: GraphQLHttpClient gql = new GraphQLHttpClient(o => { o.EndPoint = _config["API:Endpoint"]; o.JsonSerializer = new NewtonsoftJsonSerializer(); }); worked, thanks! – Walczak Jakub Mar 02 '20 at 21:42

1 Answers1

2

Just so if people land on this question, knows what finally will works:

        var graphQLOptions = new GraphQLHttpClientOptions
        {
            EndPoint = new Uri("https://your_endpoint.com/output", UriKind.Absolute),
        };
       var graphQLClient = new GraphQLHttpClient(graphQLOptions, new NewtonsoftJsonSerializer());

       var msg = new GraphQLRequest
        {
            Query = "query { yourSampleQuery { yourData} }"
        };
       var graphQLResponse = await graphQLClient.SendQueryAsync<dynamic>(msg).ConfigureAwait(false);

Just a point to consider is var graphQLClient should be static, so we do not new it up on each call.

Arjit Sharma
  • 416
  • 5
  • 15