Ben Web API sunucuya bu verileri yayınlamak istediğiniz HttpClient kullanarak Web API sunucusuna diziMesaj bayt
[Route("Incoming")]
[ValidateModel]
public async Task<IHttpActionResult> PostIncomingData(SomePostRequest requestData)
{
// POST logic here
}
ve bu - istemci için:
var client = new HttpClient();
client.BaseAddress = new Uri("http://localhost:25001/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
var content = new FormUrlEncodedContent(new Dictionary<string, string>
{
{ "id", "1" },
{ "content", "123" }
});
var result = await client.PostAsync("api/SomeData/Incoming", content);
result.EnsureSuccessStatusCode();
her şey yolunda çalışıyor (en azından, hata ayıklayıcısında PostIncomingData
durduruyor).
byte
dizisi olduğundan, JSON olarak serileştirmek istemiyorum ve ağ trafiğini azaltmak için (application/octet-stream
gibi bir şey) ikili veri olarak göndermek istiyorum. Bu sağlanabilir nasıl
?
MultipartFormDataContent
ile oynamayı denedim, ancak anlayamadığım gibi görünüyor, denetçinin yönteminin imzası eşleşmeyecek şekilde nasıl MultipartFormDataContent
. Bu içerik yerine
Ör:
var content = new MultipartFormDataContent();
content.Add(new FormUrlEncodedContent(new Dictionary<string, string> { { "id", "1" } }));
var binaryContent = new ByteArrayContent(new byte[] { 1, 2, 3 });
binaryContent.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
content.Add(binaryContent, "content");
var result = await client.PostAsync("api/SomeData/Incoming", content);
result.EnsureSuccessStatusCode();
("Desteklenmeyen ortam türü") 415 hata yol açar. Hatta
Teşekkürler, çalışır kusursuzca. Aslında sağladığınız bağlantı, istemci tarafı için daha basit bir örnek içeriyor. – Dennis
Bu seri için 'BsonMediaTypeFormatter' kullanır @Dennis. Sanırım her iki şekilde de alabilirsin. Cevabım için başka bir örnek ekleyeceğim. –
İkinci kod örneğiniz eksik içerik türü: 'var byteArrayContent = new ByteArrayContent (stream.ToArray()); byteArrayContent.Headers.ContentType = yeni MediaTypeHeaderValue ("application/bson"); var result = client.PostAsync bekliyor ( "api/someData/Giden", byteArrayContent); PostBson için ' –