【问题标题】:How to post image as byte array in visual studio webtest如何在visual studio webtest中将图像作为字节数组发布
【发布时间】:2014-11-28 01:50:51
【问题描述】:

我正在尝试测试我的 web api,但我无法将图像作为字节数组发布。我该怎么做?我正在使用文件上传参数并指定内容类型 application/octet-stream 但我得到 415 不受支持的媒体类型。如何将图像作为字节数组发布?

这是我的要求:

和Form Post参数属性:

这是我的 web api 发布方法:

这是我的 webtest 请求日志:

编辑: @nick_w 有很好的答案,但我找到了另一种方法。我从我的 webtest 文件生成代码。正确的测试请求应如下所示:

WebTestRequest request2 = new WebTestRequest("http://url/api/SendStream");
request2.Method = "POST";
request2.Headers.Add(new WebTestRequestHeader("Content-Type", "application/octet-stream"));
request2.QueryStringParameters.Add("JobId", this.Context["JobId"].ToString(), false, false);

FileStream oFileStream = new FileStream("4_e.jpg", FileMode.Open, FileAccess.Read);
byte[] bytes = new byte[oFileStream.Length];
oFileStream.Read(bytes, 0, System.Convert.ToInt32(oFileStream.Length));
oFileStream.Close();

BinaryHttpBody request2Body = new BinaryHttpBody();
request2Body.ContentType = "application/octet-stream";
request2Body.Data = bytes;
request2.Body = request2Body;
request2.SendChunked = true;
request2.Timeout = 10000000;

yield return request2;
request2 = null;

【问题讨论】:

  • 您好,是否可以将表单数据与 Web 请求一起添加?我遇到的问题是,在尝试 Request.Files["SomeName"] 时,在服务器上它返回 null。

标签: c# asp.net-web-api visual-studio-2013 performance-testing


【解决方案1】:

我预计您在将流参数绑定到字节数组时遇到问题。根据herethis 问题中找到的信息,尝试将您的方法更改为:

public async Task<ResponseEntity<SendStreamResponse>> Post([FromUri]int jobId)
{
    byte[] stream = await Request.Content.ReadAsByteArrayAsync();

    return await SendStreamAsync(jobId, stream);
}

【讨论】:

  • 感谢您的关注。我找到了另一种方法,但我接受您的解决方案作为正确答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-12
  • 2018-07-24
  • 2015-08-28
  • 2020-01-24
  • 1970-01-01
相关资源
最近更新 更多