I am authenticating through Rackspace API with the following code (using LWP):
sub authenticate { # Create a request my $req = HTTP::Request->new( POST => 'https://identity.api.rackspacecloud.com/v2.0/tokens' +); $req->content_type('application/json'); #my $json = '{"auth":{"RAX-KSKEY:apiKeyCredentials":{"username":"f +oo", "apiKey":"00000000000000000000000000000000"}}}'; my $json = quotemeta( {"auth":{"RAX-KSKEY:apiKeyCredentials":{"use +rname":$USERNAME, "apiKey":$API_KEY}}} ); $req->content( $json ); # Pass request to the user agent and get a response back my $res = $ua->request($req); # Check the outcome of the response if ( $res->is_success ) { # Do stuff ... } else { print $res->status_line, "\n"; } }
The problem is that I am not able to interpolate the variables in JSON string ($USERNAME and $API_KEY) - I am getting 400 BadRequest response. I have tried quotemeta (in the code snippet above), \Q and \E operators, escaping JSON double quotes with \.
The commented out $json line (with hard-coded credentials) works just fine.
We are what we repeatedly do. Excellence, then, is not an act but a habit. -- Will Durant (Aristotle)
In reply to Interpolating variables in JSON string by reisinge
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |