C# - ByteArray и строка вместе с HTTPClient Object
Я пытаюсь использовать сторонний API (не могу поделиться, конфиденциально), и они ожидают следующий json в качестве ввода:
{
PFID: “abc”,
CY: 2015,
AZs: [
{ AZN: “AZ1”,
x: <bytes>, y: <bytes>, x: <bytes>
},
{ AZN: “AZ2”,
x: <bytes>, y: <bytes>, z: <bytes>
}
]
}
Я использую HTTPClient для отправки запроса на этот WebAPI. Ниже приведен фрагмент для этого:
public void AddApplication(AZR request)
{
HttpClient client = new HttpClient();
client.BaseAddress = new Uri(url);
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Add("authorization","mybearertoken");
innerJson = Json.JsonParser.Serialize<AppZoneRequest>(request); // <=== coming perfectly till here. json returns a perfect json with in bytes flowing in a perfect hierarchy
HttpContent content = new StringContent(innerJson, Encoding.UTF8, "application/json"); // <==== my best guess is problem is here
HttpResponseMessage response = client.PostAsync(apiURL, content).Result;
return response;
}
public class AZR
{
public string PFID { get; set; }
public int CY { get; set; }
public List<xyz> AZs { get; set; }
}
public class xyz
{
public string AZN { get; set; }
public byte[] x { get; set; }
public byte[] y { get; set; }
public byte[] z { get; set; }
}
Когда я отправляю запрос, он возвращает мне статус 500, который указывает на внутреннюю ошибку сервера. Я понимаю, что вы не можете сериализовать массив байтов в строковом содержимом, и нам нужно использовать Byte ArrayContent, а если у вас есть оба, то использовать HttpMultipartFormDataContent. Но здесь иерархия такова, что у меня есть строка, int и массив объектов, а объект внутри него содержит строку, byte[], byte[], byte[]. Теперь я действительно не могу найти способ отправить запрос с таким. Любая помощь?