擅长:python、mysql、java
<p>一个关键问题是必须正确地对所有HTTP参数值进行URL编码。在</p>
<p>以下文档已从SimpleDB文档中消失,但可以在SQS文档中找到,并且仍然与SimpleDB非常相关:</p>
<blockquote>
<p>Do not URL encode any of the
unreserved characters that RFC 3986
defines.</p>
<p>These unreserved characters are A-Z,
a-z, 0-9, hyphen ( - ), underscore ( _
), period ( . ), and tilde ( ~ ).</p>
<p>Percent encode all other characters
with %XY, where X and Y are hex
characters 0-9 and uppercase A-F.</p>
<p>Percent encode extended UTF-8
characters in the form %XY%ZA</p>
<p>Percent encode the space character as
%20 (and not +, as common encoding
schemes do).</p>
</blockquote>
<p>您会注意到,在Roger链接的<code>python-simpledb</code>模块中,它们在形成请求时遵循以下规则:</p>
<pre><code>def escape(s):
return urllib.quote(s, safe='-_~')
def urlencode(d):
if isinstance(d, dict):
d = d.iteritems()
return '&'.join(['%s=%s' % (escape(k), escape(v)) for k, v in d])
</code></pre>