Hi Deepak! Thanks for your response.
To clarify what I'm doing: my source page contains a number of tags like
this:
<input value="a7684624-aa9d-4bdd-be3c-97e8d67485d4"
name="0eeaaef9-d725-4608-bcbb-6e4e55af41d3_1" type="radio" id="[snip]"
CssClass="rdbtn" GroupName="0eeaaef9-d725-4608-bcbb-6e4e55af41d3_1"
checked="checked" />
I am grabbing them with this regexp:
<input
value="([a-z0-9A-Z]{8}-[a-z0-9A-Z]{4}-[a-z0-9A-Z]{4}-[a-z0-9A-Z]{4}-[a-z0-9A-Z]{12})"
name="([a-z0-9A-Z]{8}-[a-z0-9A-Z]{4}-[a-z0-9A-Z]{4}-[a-z0-9A-Z]{4}-[a-z0-9A-Z]{12}_1)".*?checked="checked"
and then using a ForEach controller and a beanshell sampler to build the
following string contained in a JMeter variable:
d49c8919-36d2-4825-b739-ff10752f3ede_1=efa5f43d-395e-4c92-9579-bc4215b0773c&f855d8c6-9cd8-419e-836e-59ad55565dab_1=1c40bc35-86f8-4e30-aa5c-2efb7284c4e2&bd5b9945-3c29-4c81-b890-e782f2385471_1=dd78cbb0-2d00-48af-aa77-6a3b1af8bd15&
[etc etc]
This string contains the = and & signs you would expect to see in a POST
body. But when JMeter sends this, it URI encodes those characters, so it
ends up sending:
a602b71a-95ab-4046-8b24-8454a6d8a295_1%3Dc8635002-86a7-4841-9d8d-68bd375b1236%26b212fb47-6261-4f74-b8bc-8c7b331ed21a_1%3D4bba8a26-5542-43ef-b8e3-f57a0e95d7b7%26a3cdbda4-ea65-4a0a-95b0-99b94fb782de_1
[etc etc]
Note that & has become %26 and = has become %3D. Then, of course, the web
service I'm calling doesn't seen all those name=value pairs, it just sees a
single parameter. This happens when the "encode?" tickbox on the HTTPRequest
is ticked _or_ unticked.
On Mon, Nov 9, 2009 at 5:14 PM, Deepak Shetty <[email protected]> wrote:
> Hi
> a. When you say URL encode do you mean the %nn for non ascii characters or
> the & encoded as & (because these are HTML encoded to escape & and need
> to be dealt with differently).
> What does the source actually have? If the source html on which you are
> running your regex to extract data , is already encoded , then checking or
> unchecking the checkbox will appear to have to no effect (it might get
> double encoded). can you add Debug samplers to check whether the data you
> are extracting out is correct or already encoded?
> b. Checking or Unchecking the encode value does work, you can try it
> standalone with a hardcoded string which has special characters like = or +
>
> regards
> deepak
>
>
> On Mon, Nov 9, 2009 at 6:51 AM, Richard Gaywood <[email protected]
> >wrote:
>
> > Hi list! Encountered a problem with JMeter (v2.3.4) that I cannot find a
> > workaround for. Hoping someone has a suggestion I've overlooked.
> >
> > I have a complicated HTTP POST request (70+ parameters, with a number of
> > variable substitutions). I've coded it up but encountered a problem with
> > eleven parameters that were just GUID name/value pairings. Some work with
> a
> > regular expression extractor, a Beanshell sampler, and a ForEach
> controller
> > has constructed these into a single JMeter variable with the usual
> > "name=value&name=value&name=value&" (etc) structure.
> >
> > My problem is, JMeter is insisting in URL encoding the JMeter variable
> > contents when I put it in the "send parameters with the request" section,
> > regardless of how I tick or untick the "encode?" column. I found this old
> > post by sebb:
> >
> > On Mon, Oct 8, 2007 at 7:40 PM, sebb <[email protected]> wrote:
> >
> >> OK, in that case I think there is a work-round.
> >>
> >> If you use parameters with values but *no names*, then HttpClient (and
> >> Java http) will include the values in the POST body as is with no
> >> encoding or equals signs.
> >>
> >> (This does not appear to be documented anywhere ... oops!)
> >>
> >
> > But this only seems to work when I only have one single line in the
> request
> > parameters config. As soon as I mix the workaround with normally encoded
> > parameters, JMeter stops working. See my screenshot -- where I set two
> > parameters; the first a JMeter variable containing the string
> > "name=value&spam=eggs" and the other a normal parameter with name "ham"
> and
> > value "green". When I hit send, the POST parameters look like:
> > POST data:
> > ham=green
> > ...with no mention of the other two parameters.
> >
> > So... is there a workaround for this? Or do I need to manually URL encode
> > my 60-odd parameters and put them all in a single Value box of my
> > HTTPClient?
> >
> >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [email protected]
> > For additional commands, e-mail: [email protected]
> >
>