我完全相信您的问题是,在从二进制流转换为String然后又返回时,您丢失了一些不可打印的字符。我正在
考虑两种可能的解决方法:
将二进制数据写入文件中,而不是保存为字符串,然后在文件部分的正文中将文件名用作HTTP采样器中的变量
使用beanshell采样器,并使用体内的二进制数据构造自己的HTTPClient对象和POST请求,并自行触发,而不是使用HTTP采样器
由于所有其他文件I / O,我不喜欢第一种选择。我不
喜欢第二个选项,因为现在测量响应时间将包括
您正在beanshell中执行的所有请求程序集-因此您必须选择
一个使您烦恼的选项。
让我知道,如果您想让我为这两种情况编写一些代码示例。
编辑:对于使用HttpClient 4的beanshell HTTP调用:
import org.apache.http.HttpEntity;import org.apache.http.HttpHeaders;import org.apache.http.HttpResponse;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.HttpClient;import org.apache.http.client.methods.HttpPost;import org.apache.http.entity.ByteArrayEntity;import org.apache.http.impl.client.DefaultHttpClient;byte[] data = null;//...assign protobuf binary buffer to data...HttpClient client = new DefaultHttpClient();HttpPost post = new HttpPost("http://127.0.0.1");HttpEntity entity = new ByteArrayEntity(data);post.setEntity(entity);post.setHeader(HttpHeaders.CONTENT_TYPE, "application/octet-stream");HttpResponse response=null;try { response = client.execute(post);} catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace();} catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace();}ResponseCode = response.getStatusLine().getStatusCode().toString();//if some assert is true thenIssuccess = true;ResponseMessage="Some Response Message";这是未经测试的protobuf终点,请让我知道它如何为您效劳。



