Thanks for the quick reply.

My application essential builds the protobuf object from the incoming wire
string. It is literally something like MyProtobufObject.fromString(...):

The POST payload typically looks something like this
b'\n\xb1\t\n$9c4a0f64-791e-4286-b4a3-ba862e4b31bc\x12\xa4\x01\n\x011\x12\x1f\x08\xac\x02\x10\xfa\x010\x010\x020\x060\x070\n0\x0b0\x0e\xc2>\x08\x1a\x06\x08\xac\x02\x10\xfa\x01Zr\x08\x00\x12\x1a\n'

Notice the single slashes.  I am able to use postman to post the exact body
content, which makes it to my backend sever intact and unaltered--but maybe
postman is just too kind.

However, when I am using JMeter, and now Apache Bench, the content that is
being sent not only has the added b'' wrapper, but also the backslashes are
backslashed again--which causes my issue.  I've tried the file upload
approach but am still getting this bad behavior.  It's the backslashes that
are getting me--as I could pass only
\n\xb1\t\n$9c4a0f64-791e-4286-b4a3-ba862e4b31bc\x12\xa4\x01\n\x011\x12\x1f\x08\xac\x02\x10\xfa\x010\x010\x020\x060\x070\n0\x0b0\x0e\xc2>\x08\x1a\x06\x08\xac\x02\x10\xfa\x01Zr\x08\x00\x12\x1a\n,
and have that added wrapper of b"" work in my favor, but getting the
following isn't good:

b'\\n\\xb1\\t\\n$9c4a0f64-791e-4286-b4a3-ba862e4b31bc\\x12\\xa4\\x01\\n\\x011\\x12\\x1f\\x08\\xac\\x02\\x10\\xfa\\x010\\x010\\x020\\x060\\x070\\n0\\x0b0\\x0e\\xc2>\\x08\\x1a\\x06\\x08\\xac\\x02\\x10\\xfa\\x01Zr\\x08\\x00\\x12\\x1a\\n'


On Wed, Jun 20, 2018 at 6:15 PM, David Luu <manga...@gmail.com> wrote:

> I'm unaware of details of protobuf particularly with HTTP, but if you were
> to make an HTTP request using a REST/API client/tool (or custom scripting)
> or a browser based REST client, what would it actually look like for what
> you send, and/or rather what does the raw data look like when you sniff it
> say with an HTTP proxy like fiddler/charles.
>
> I'm just wondering if jmeter is the only tool with the issue or other REST
> clients have it too or not.
>
> How are you POSTing the data exactly? Pasting the value in the GUI field in
> the sampler? Or via a file upload/POST? If the former, I suggest you try
> the latter of POSTing/uploading an empty protobuf encoded file with jmeter
> and see if that works for you. And be sure the file is generated/encoded
> using protobuf tooling (or scripts), not some text editor. Because protobuf
> is a binary format as I recall, denoting it as b'' might just be treated as
> plain text by jmeter regardless of the Content-Type (unless jmeter was
> smart to key off that header value). A library that deals with protobuf or
> some languages like python might understand b'' to be empty binary data,
> but other tools may not and think that just a literal string value. Using
> true protobuf encoded file (or dumping that value out) will ensure you get
> the right encoding.
>
> If the GUI based HTTP sampler isn't ideal or working, you could try the
> scripting based samplers using Java, Groovy, Javascript together with
> protobuf and HTTP libraries for those languages to do what you need.
>
> On Wed, Jun 20, 2018 at 5:34 PM, Britt Cagnina <tyr...@gmail.com> wrote:
>
> > I have a Sampler HTTP Request setup with the body as:
> >
> > b''
> >
> > This is a simple empty protobuf object, but JMeter is actually sending
> some
> > wrapped version of this:
> >
> > b"b''"
> >
> > I have used Content-Type to be both application/protobuf and
> > application/octet-stream.
> >
> > Is there a way to get JMeter to post EXACTLY what I give it?
> >
> >
> > I have an open stack overflow issue for better formatting:
> > https://stackoverflow.com/questions/50957492/jmeter-not-
> > posting-binary-data-correctly
> >
> > Thanks,
> > Britt
> >
>

Reply via email to