Calling a REST service with Python

11,218

Solution 1

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.

Solution 2

  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.

Share:
11,218
froadie
Author by

froadie

Updated on June 04, 2022

Comments

  • froadie
    froadie almost 2 years

    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?