public class MicrosoftJsonConverter : JsonConverter
private readonly JsonSerializer _customSerializer;
public MicrosoftJsonConverter()
_customSerializer = new JsonSerializer() {DateFormatHandling = DateFormatHandling.MicrosoftDateFormat};
public override bool CanConvert(Type objectType)
return objectType == typeof(DateTime);
public override object ReadJson(JsonReader reader, Type objectType, object existingValue,
JsonSerializer serializer)
return _customSerializer.Deserialize(reader, objectType);
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
_customSerializer.Serialize(writer, value);
private static HttpClient httpClient = new HttpClient();
private static UriBuilder uriBuilder = new UriBuilder();
public static void Main()
HttpRequestMessage _reqMessage = new HttpRequestMessage();
_reqMessage.Method = HttpMethod.Post;
string json = "{\"operationName\":null,\"variables\":{},\"query\":\"{ categories { id } }\"}";
System.Console.WriteLine("RAB: json: " + json);
Newtonsoft.Json.Linq.JContainer postBody = (Newtonsoft.Json.Linq.JContainer)Newtonsoft.Json.JsonConvert.DeserializeObject(json);
_reqMessage.Content = new StringContent(postBody.ToString(Formatting.None, new RestClient.MicrosoftJsonConverter()), Encoding.UTF8, "application/json");
string token = "cb3be092-6775-4061-a9b7-ae6dc0e38057";
httpClient.BaseAddress = new Uri("https://octopart.com/api/v4/endpoint?token=" + token);
httpClient.DefaultRequestHeaders.ConnectionClose = true;
var mess = _reqMessage.ToString();
System.Console.WriteLine("RAB: message: " + mess);
var resulta = httpClient.SendAsync(_reqMessage).GetAwaiter().GetResult();
var reta = resulta.Content.ReadAsStringAsync().GetAwaiter().GetResult();