2015-05-29 44 views
0

我读的API文档和他们说的格式应该是这样的:URL编码部分

https://app.datafireball.com/SearchService/search/xref?parts=[{"partNumber":"mypartnumber", "manufacturer":"my factory"}]&fmt=xml 

当我在Chrome开发者控制台监视器。所请求的URL看起来像:

https://app.datafireball.com/SearchService/search/xref?parts=[{%22partNumber%22:%22bav99%22,%22manufacturer%22:%22my%20factory%22}]&fmt=xml 

我可以看到,有一些已经被编码的几个字符,例如:

" => %22 
space => %20 

我知道,我可以使用urllib.quote,使但是这种情况发生,我真的很难理解为什么他们只编码双引号和空格,而不是大括号和其他字符的{

最后,我不得不硬编码我的Python代码在这样的方式:它看起来半硬编码

urltemplate = "https://app.datafireball.com/SearchService/search/xref?parts=[{{%22partNumber%22:%22{0}%22,%22manufacturer%22:%22{1}%22}}]&fmt=xml" 
url = urltemplate.format(urllib.quote(mpn), urllib.quote(mfr)) 

,任何人都可以帮助我了解为什么,什么是编码的正确方法网址。

回答

0

我不认为你自己需要编码工作,编码你的url到不同格式的浏览器也会在呼叫服务器API时解码你的url。