2010-11-23 5 views
0

여러 매개 변수가있는 URL로 말풍선을 만들고 싶습니다. 나는 아래 코드를 열거했다. 예를 들어 "curl -d @filter"에 해당하는 옵션이 있습니까? 아니면 URL 인코딩이 있습니까?pycurl을 사용하여 url에 대해 여러 매개 변수를 전달합니다.

SER = foobar 
PASS = XXX 

STREAM_URL = "http://status.dummy.com/status.json?userId=12&page=1" 
class Client: 
      def __init__(self): 
     self.buffer = "" 
     self.conn = pycurl.Curl() 
     self.conn.setopt(pycurl.USERPWD, "%s:%s" % (USER,PASS)) 
     self.conn.setopt(pycurl.URL, STREAM_URL) 
     self.conn.setopt(pycurl.WRITEFUNCTION, self.on_receive) 
     self.conn.perform() 

    def on_receive(self,data): 
     self.buffer += data 
+0

게시 요청을 하시겠습니까? (당신은 -d 옵션을 언급했다) – cyraxjoe

답변

3

Pycurl은 libcurl을위한 매우 얇은 래퍼입니다. libcurl로 할 수 있다면, pycurl로 할 수 있습니다. (대부분).

예를 들어 :

pycurl.setopt는 CURLOPT_ 프리픽스가 제거 된 것을 제외하고는, libcurl에서의 * 옵션이 CURLOPT_로 지정 libcurl에서, 상수를 curl_easy_setopt 대응한다.

참조 : http://pycurl.sourceforge.net/doc/curlobject.html

말했다되고 그건의 curl -d 옵션은 HTTP POST 요청을 보내는입니다 ... 아닌 예를 보여줍니다 GET 스타일.

libcurl은 이미 URL 인코딩 된 URL을 기대합니다. 필요한 경우 http://docs.python.org/library/urllib.html을 사용하십시오.

질문의 샘플 URL에 이미 2 개의 매개 변수 (userId 및 page)가 있습니다.

일반적으로 형식은 URL 다음에 '물음표', 그 뒤에 이름 = 값 쌍이 앰퍼샌드 기호로 결합됩니다. 이름이나 값에 특수 문자가 포함되어 있으면 백분율로 인코딩해야합니다.

또한
>>> import urllib 
>>> params = [('name1','value1'), ('name2','value2 with spaces & stuff')] 
>>> pairs = urllib.urlencode(params) 
>>> fullurl = 'http://status.dummy.com/status.json' + '?' + pairs 
>>> print fullurl 
http://status.dummy.com/status.json?name1=value1&name2=value2+with+spaces+%26+stuff 
>>> 

urllib.urlopen 기능을 참조하십시오

는 그냥를 urlencode 함수를 사용합니다. 아마도 말릴 필요가 없을 것입니다. (하지만 귀하의 응용 프로그램을 모른다 ...)

희망이 도움이됩니다. 그렇다면 대답을 표시하고 알려주십시오. :-)

+0

정보 nonot1 주셔서 감사하지만 URL에 여러 매개 변수를 포함하는 방법을 찾고 있습니다. 내 생각 엔 URL에서 잘못하고 있지만 그 문제를 해결할 방법이 없다는 것입니다. – calmcajun

+0

@coolcajun 업데이트 된 답변보기 – nonot1

관련 문제