Thank you for response.
I am not using SDK wrapper. This is about c# and DataContractJsonSerializer.
Code Example:
var request = WebRequest.Create(uri) as HttpWebRequest;
request.Timeout = 30000;
request.Method = "POST";
request.ContentType = "application/json";
var requestData = Encoding.ASCII.GetBytes(json);
request.ContentLength = requestData.Length;
var requestStream = request.GetRequestStream();
requestStream.Write(requestData, 0, requestData.Length);
requestStream.Close();
// Get response
using (var response = request.GetResponse() as HttpWebResponse)
{
// Get the response stream
var stream = response?.GetResponseStream();
if (stream != null)
{
return this.DeserializeResponse<T>(stream);
}
}
public GeoTabResponse<T> DeserializeResponse<T>(Stream stream)
{
GeoTabResponse<T> response = null;
var ms = new MemoryStream();
stream.CopyTo(ms);
ms.Position = 0;
var responseReader = new StreamReader(ms);
var rawJson = responseReader.ReadToEnd();
try
{
ms.Position = 0;
var ser = new DataContractJsonSerializer(typeof(GeoTabResponse<T>));
response = ser.ReadObject(ms) as GeoTabResponse<T>;And this is HOS class
[DataContract]
public class GeoTabHOS
{
[DataMember(Name = "dateTime", EmitDefaultValue = false)]
public string DateTime { get; set; }
[DataMember(Name = "id", EmitDefaultValue = false)]
public string Id { get; set; }
[DataMember(Name = "driver", EmitDefaultValue = false)]
public GeoTabUser Driver { get; set; }
...
}
[DataContract]
public class GeoTabUser
{
[DataMember(Name = "id", EmitDefaultValue = false)]
public string Id { get; set; }
...
It works great if response does not contain driver "NotUserId".
Thanks,