2009-10-09 4 views
5

Есть ли у кого-нибудь простой пример отправки запроса XML POST в RESTful API с Python? Я пытаюсь использовать библиотеку python urllib2 для «создания нового проекта» в API урожая, без везения. Переменная нагрузка является допустимым XML-документ, который является почти копировать/вставить их документации (под Create New Project заголовок), как показано здесь:XML POST REST Запрос с использованием Python

http://www.getharvest.com/api/projects

Вот код, который я пытаюсь выполнить.

def postRequest(): 
    """ Makes POST request to url, and returns a response. """ 
    url = 'http://subdomain.harvestapp.com/projects' 

    opener = urllib2.build_opener() 
    opener.addheaders = [('Accept', 'application/xml'), 
         ('Content-Type', 'application/xml'), 
         ('Authorization', 'Basic %s' % base64.encodestring('%s:%s' % (self.username, self.password))[:-1]), 
         ('User-Agent', 'Python-urllib/2.6')] 

    req = urllib2.Request(url=url, data=payload) 
    assert req.get_method() == 'POST' 
    response = self.opener.open(req) 
    print response.code 

    return response 

Я получаю код ответа 200 (Status OK) вместо кода ответа 201 (Created) ... это вопрос для парней Harvest поддержки?

Любые советы, которые были бы очень ценными.

Thanks, Jeff.

ответ

1

Обычно возвращается ответ 200, даже если ответ 201 будет более подходящим. Вы уверены, что запрос обрабатывается неправильно, даже если вы получаете «правильный» ответ?

1

Вы используете локальный носитель везде, кроме строки, в которой вы создаете ответ, где вы используете self.opener, что похоже на проблему.

Смежные вопросы