@@ -266,8 +266,7 @@ def __init__(self, method=HTTP_METHOD, url=None, parameters=None):
266266
267267 @setter
268268 def url (self , value ):
269- parts = urlparse .urlparse (value )
270- scheme , netloc , path = parts [:3 ]
269+ scheme , netloc , path , params , query , fragment = urlparse .urlparse (value )
271270
272271 # Exclude default port numbers.
273272 if scheme == 'http' and netloc [- 3 :] == ':80' :
@@ -278,7 +277,7 @@ def url(self, value):
278277 if scheme != 'http' and scheme != 'https' :
279278 raise ValueError ("Unsupported URL %s (%s)." % (value , scheme ))
280279
281- value = '%s://%s%s' % ( scheme , netloc , path )
280+ value = urlparse . urlunparse (( scheme , netloc , path , params , query , fragment ) )
282281 self .__dict__ ['url' ] = value
283282
284283 @setter
@@ -316,7 +315,14 @@ def to_postdata(self):
316315
317316 def to_url (self ):
318317 """Serialize as a URL for a GET request."""
319- return '%s?%s' % (self .url , self .to_postdata ())
318+ base_url = urlparse .urlparse (self .url )
319+ query = urlparse .parse_qs (base_url .query )
320+ for k , v in self .items ():
321+ query .setdefault (k , []).append (v )
322+ url = (base_url .scheme , base_url .netloc , base_url .path , base_url .params ,
323+ urllib .urlencode (query , True ), base_url .fragment )
324+ print url
325+ return urlparse .urlunparse (url )
320326
321327 def get_parameter (self , parameter ):
322328 ret = self .get (parameter )
0 commit comments