I’m trying to figure out what’s the correct URL format for the Intersango API (which is poorly documented). I’m programming my client in C#, but I’m looking at the Python example and I’m a little confused as to what is actually being placed in the body of the request:
def make_request(self,call_name,params):
params.append(('api_key',self.api_key)) // <-- How does this get serialized?
body = urllib.urlencode(params)
self.connect()
try:
self.connection.putrequest('POST','/api/authenticated/v'+self.version+'/'+call_name+'.php')
self.connection.putheader('Connection','Keep-Alive')
self.connection.putheader('Keep-Alive','30')
self.connection.putheader('Content-type','application/x-www-form-urlencoded')
self.connection.putheader('Content-length',len(body))
self.connection.endheaders()
self.connection.send(body)
response = self.connection.getresponse()
return json.load(response)
//...
I can’t figure out this piece of code: params.append(('api_key',self.api_key))
Is it some kind of a dictionary, something that gets serialized to JSON, comma delimited, or exactly how does it get serialized? What would the body look like when the parameters are encoded and assigned to it?
P.S. I don’t have anything that I can run the code with so I can debug it, but I’m just hoping that this is simple enough to understand for somebody that knows Python and they would be able to tell me what’s happening on that line of code.
paramsis a list of 2-element lists. The list would look like ((key1, value1), (key2, value2), ...)params.append(('api_key',self.api_key))adds another 2-element list to the existing params list.Finally,
urllib.urlencodetakes this list and converts it into a propert urlencoded string. In this case, it will return a stringkey1=value1&key2=value2&api_key=23423. If there are any special characters in your keys or values, urlencode will %encode them. See documentation for urlencode