Вызов службы REST с Python - PullRequest
       7

Вызов службы REST с Python

3 голосов
/ 27 августа 2010

У меня есть служба REST, которую я пытаюсь вызвать.Требуется что-то похожее на следующий синтаксис:

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

Я должен подключиться к нему с помощью POST.Я пытался читать это онлайн ( здесь и здесь , например) ... но это моя проблема:

Если я пытаюсь использовать HTTPметод get request, путем создания моего собственного пути, например:

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

выдает ошибку, в которой говорится, что GET недопустим.

Если я пытаюсь использовать метод HTTP post request,как это:

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

возвращает сообщение об ошибке 404 вместе с сообщением The requested resource () is not available. И когда я отлаживаю это, кажется, что параметры строятся в строку запроса ("param1 = what¶m2 = что угодно"...)

Как я могу использовать POST, но передать параметры, разделенные косой чертой, как ожидается?Что я делаю не так?

Ответы [ 3 ]

5 голосов
/ 14 сентября 2010

Я знаю, что это несправедливо, но именно так все и произошло ... Программист, отвечающий за службу REST, изменил ее на использование синтаксиса &key=value.

2 голосов
/ 27 августа 2010
  1. Использование urllib2
  2. Ты должен быть умным; что-то вроде

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

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

    Может работать.

0 голосов
/ 27 августа 2010

Примерно так может работать:

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

Второй аргумент urlopen говорит ему сделать запрос POST с пустыми данными. quote_plus позволяет вам экранировать специальные символы без принудительного включения в схему &key=value.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...