(子问题:如何从WebAPI2中的PushStreamContent检索正文?)
我想将压缩的消息从一个API发送到另一个API。我通过流内容来做到这一点。我目前有以下逻辑:
发送逻辑(通过WebAPI2发送PushStreamContent):
private async Task InitPushStreamContent(Stream stream, HttpContent content, TransportContext transportContext)
{
var tstText = "Testing 1-2-3";
var byteArray = Encoding.ASCII.GetBytes(tstText);
await new MemoryStream(byteArray).CopyToAsync(stream);
stream.Close();
}
public async Task Execute() {
using (PushStreamContent pushContent = new
PushStreamContent(InitPushStreamContent))
{
var requestMessage = new HttpRequestMessage
{
Content = pushContent
};
return await ResendMessagesOtherStage("someParameter", "someParameter",
"someParameter",
"someParemeter", requestMessage);
}
}
检索逻辑(另一个API检索流):
public async Task<IHttpActionResult> UploadSomethingAsync(HttpRequestMessage request)
{
var stream = await request.Content.ReadAsStreamAsync();
var length = (int)stream.Length;
var byteArray = new byte[length];
var message = Encoding.ASCII.GetString(byteArray, 0, byteArray.Length);
}
我检索到的消息不是:
“正在测试1-2-3”
但是是:
{“ Content”:{“ Headers”:[{“ Key”:“ Content-Type”,“ Value”:[“ application / octet-stream”]}}}}
我不确定我要监视什么...检索zip文件时得到的结果相同。
答案 0 :(得分:1)
我通过删除HttpRequestMessage包装器并更改HttpClient接收器以使用接受HttpContent的PostAsync方法发送请求来解决了我的问题。 我以前使用过通用的SendAsync方法,该方法接受HttpRequestMessage。
我认为问题在于,通过将内容包装在HttpRequestMessage对象中,pushStreamContent的方法从未在传出请求中触发。也许HttpRequestMessage与PushStreamContent类型不兼容?