Automation 如何在jmeter post请求中发送字节数组

Automation 如何在jmeter post请求中发送字节数组,automation,jmeter,performance-testing,jmeter-plugins,Automation,Jmeter,Performance Testing,Jmeter Plugins,有一个WCF服务。我必须访问的方法有1个参数作为输入,其类型为Stream 我不知道如何将流对象从JMeter提供给WCF服务 目前,我已经编写了一个C#方法(MVC项目),它从JMeter接受字符串,然后将其转换为流类型对象,然后由WCF服务处理。但是这种方法没有给出WCF服务的实际性能 [WebInvoke(UriTemplate = "", Method = "POST")] [OperationContract] public Stream ReceiveChirp(St

有一个WCF服务。我必须访问的方法有1个参数作为输入,其类型为Stream

我不知道如何将流对象从JMeter提供给WCF服务

目前,我已经编写了一个C#方法(MVC项目),它从JMeter接受字符串,然后将其转换为流类型对象,然后由WCF服务处理。但是这种方法没有给出WCF服务的实际性能

[WebInvoke(UriTemplate = "", Method = "POST")]
    [OperationContract]
    public Stream ReceiveChirp(Stream fileContents)
    {
        string response = "";
        long ticks = DateTime.Now.Ticks;
        DateTime receiveTime = DateTime.Now;
目前我得到一个对象类型的异常

例外情况如下:

       <p class="heading1">Request Error</p>
    <p xmlns="">The server encountered an error processing the request. Please see the <a rel="help-page" href="http://t2vnmeterservicessciexp.cloudapp.net/ReceiveChirp/help">service help page</a> for constructing valid requests to the service. The exception message is 'Object reference not set to an instance of an object.'. See server logs for more details. The exception stack trace is: </p>
      <p>   at Base.VN.Core.Generic.GenericExtensions.ChirpGenerator.ConvertStringToByteArray(String input)
   at T2.VN.Core.MeterServices.MainEndPoint.ReceiveChirp(Stream fileContents)
   at SyncInvokeReceiveChirp(Object , Object[] , Object[] )
   at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]&amp; outputs)
   at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc&amp; rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc&amp; rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc&amp; rpc)
   at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)</p>

我认为最简单的方法是使用和插件作为JMeter的HTTP请求采样器参数,这些参数仅限于字符串,而使用这些插件,您可以随HTTP请求一起发送“原始”字节数组

您可以使用安装两个测试元素


我认为最简单的方法是使用和插件作为JMeter的HTTP请求采样器参数,这些参数仅限于字符串,而使用这些插件,您可以随HTTP请求一起发送“原始”字节数组

您可以使用安装两个测试元素


我们可以在这里使用Java请求采样器。我们可以编写定制代码,在字节流中创建自己的数据,并执行GET/POST。 我们可以查看HttpSampler的代码,在post/get方法中,我们可以返回字节数组而不是字符串


通过Http采样器无法发送字节数组。i、 HTTP采样器只适用于字符串

我们可以在这里使用Java请求采样器。我们可以编写定制代码,在字节流中创建自己的数据,并执行GET/POST。 我们可以查看HttpSampler的代码,在post/get方法中,我们可以返回字节数组而不是字符串


通过Http采样器无法发送字节数组。i、 e.HTTP Sampler仅适用于字符串

您可以添加异常以及您的测试计划是什么样子吗?您可以添加异常以及您的测试计划是什么样子吗?请详细说明,我看到了这个解决方案,但如何在post请求中提供十六进制字符串作为字节数组。您可以详细说明,我看到了这个解决方案,但如何在post请求中提供十六进制字符串作为字节数组。
public string TestServicePacket(string data)
        {
            var url = "http://test.net/";
            var requestUrl = string.Format("{0}/ReceiveChirp/", url);
            var request = (HttpWebRequest)WebRequest.Create(requestUrl);
            request.Timeout = Timeout.Infinite;
            request.Method = "POST";
            request.ContentType = "text/plain";

            var dataTrailing = "&UserName=eReg&UserPassword=abc123";
            var dataTrailingBytes = Encoding.ASCII.GetBytes(dataTrailing);

            var bChirp = ConvertStringToByteArray(data);

            var ToSend = new byte[dataTrailingBytes.Length + bChirp.Length];
            ToSend = bChirp.Concat(dataTrailingBytes).ToArray();

            request.ContentLength = ToSend.Length;

            using (var requestStream = request.GetRequestStream())
            {
                // Send the file as body request.
                requestStream.Write(ToSend, 0, ToSend.Length);
                requestStream.Close();
            }
            var response = (HttpWebResponse)request.GetResponse();
            var responseStream = response.GetResponseStream();
            var memoryStream = new MemoryStream();
            string resultResponse;

            resultResponse = ConvertStream(responseStream);
            return resultResponse;
        }