2009-10-09 18 views
5

Czy ktoś ma prosty przykład wysłania żądania XML POST do RESTful API z Pythonem? Próbuję użyć biblioteki Python urllib2 do "utworzenia nowego projektu" w interfejsie API Harvest, bez powodzenia. Zmienna ładowność jest poprawnym dokumentem XML, który jest blisko kopiowanie/wklejanie ich dokumentacji (pod pozycją Create New Project) przedstawiono poniżej:XML POST REST Żądanie za pomocą Pythona

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

Oto kod próbuję wykonać.

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 

otrzymam kod odpowiedzi 200 (stan OK) zamiast kodu odpowiedzi 201 (utworzone) ... jest to pytanie do chłopaków zbiorów wsparcia?

Wszelkie wskazówki, które ktoś ma, byłyby bardzo cenione.

Dzięki, Jeff.

Odpowiedz

1

Powszechne jest zwracanie odpowiedzi 200, nawet gdy odpowiedź 201 byłaby bardziej odpowiednia. Czy na pewno wniosek nie został poprawnie przetworzony, nawet jeśli otrzymujesz "prawidłową" odpowiedź?

1

Używasz lokalnego otwierającego wszędzie z wyjątkiem wiersza, na którym tworzysz odpowiedź, gdzie używasz self.opener, który wygląda jak problem.

Powiązane problemy