2010-12-29 3 views
1

저는 pycurl "POST"를 REST 인터페이스 (이 경우, Neo4j)로 보내는 방법을 알아 내려고하고 있습니다.은 curl에서 pycurl로 이동하는 데 도움이 필요합니다

내가 함께 CURL을 통해 작업을 수행 할 수 있습니다

curl -HContent-Type:application/json -X POST -d '"http://localhost:7474/db/data/node/123"' http://localhost:7474/db/data/index/node/persons/name/peter 

...하지만 난 CURL 옵션이 번역하는 방법을 알아낼 수 없습니다. 이것은 내가 들어 왔 그 가장 가까운하지만 내가 데이터를 하는가가 전송하는 것을

data = "http://localhost:7474/db/data/node/123" 
headers = {"Content-Type": "application/json"} 
url_dir = "http://localhost:7474/db/data/index/node/persons/name/peter" 

conn = pycurl.Curl() 
c.setopt(pycurl.URL, url_dir) 
c.setopt(pycurl.HTTPHEADER, headers) 

실패?

편집 : 데이터 : 저는 데이터라는 제목의 변수입니다. pycurl을 통해 데이터 (-d 옵션에 포함 된 내용)를 보내려면 어떻게해야합니까? urlencode-ing 시도했지만 오류가 발생했습니다 (분명히 때문에 형식). urllib.quote_plus()를 시도했지만 REST 서비스에서 400 오류가 발생했습니다. 나는 GET이 잘 작동하기 때문에 이것이 문제라고 생각한다.

답변

3

이 문이 도움이 될 수 덧붙이 자세한 정보를 원하시면

c.setopt(pycurl.POST, 1) 
c.setopt(pycurl.POSTFIELDS, data) 

체크 아웃 libcurl tutorial의 "HTTP 게시"절을 참조하십시오.

참고 1 data 문자열을 큰 따옴표로 묶어야하는 경우 c.setopt(pycurl.POSTFIELDS, '"%s"' % data)을 입력해야합니다.

참고 2 : 나는 당신이 실수 한 것으로 생각합니다. conn 변수는 c이라고해야합니다.

+0

감사합니다. 나는 너의 제안을 시도 할 것이다. 또한 오타에 관해서는 내 부분에 대한 감독이었습니다. 두 가지 소스에서 붙여 넣은 결과였습니다. – swasheck

+0

감사합니다 !!!! "주 1"은 내가 필요로하는 것이었다. – swasheck

관련 문제