Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Calling a REST service with Python

I have a REST service that I'm trying to call. It requires something similar to the following syntax:

http://someServerName:8080/projectName/service/serviceName/
      param1Name/param1/param2Name/param2

I have to connect to it using POST. I've tried reading up on it online (here and here, for example)... but this is my problem:

If I try using the HTTP get request method, by building my own path, like this:

BASE_PATH = "http://someServerName:8080/projectName/service/serviceName/"
urllib.urlopen(BASE_PATH + "param1/" + param1 + "/param2/" + param2)

it gives me an error saying that GET is not allowed.

If I try using the HTTP post request method, like this:

params = { "param1" : param1, "param2" : param2 }
urllib.urlopen(BASE_PATH, urllib.urlencode(params))

it returns a 404 error along with the message The requested resource () is not available. And when I debug this, it seems to be building the params into a query string ("param1=whatever&param2=whatever"...)

How can I use POST but pass the parameters delimited by slashes as it's expected? What am I doing wrong?

like image 959
froadie Avatar asked Mar 15 '26 14:03

froadie


2 Answers

I know this is sort of unfair, but this is what ended up happening... The programmer in charge of the REST service changed it to use the &key=value syntax.

like image 157
froadie Avatar answered Mar 18 '26 04:03

froadie


  1. Use urllib2
  2. You're going to have to be clever; something like

    params = { "param1" : param1, "param2" : param2 }

    urllib2.urlopen(BASE_PATH + "?" + urllib.urlencode(params), " ")

    Might work.

like image 20
Jason Scheirer Avatar answered Mar 18 '26 03:03

Jason Scheirer



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!