Google App Engine为何返回400错误请求状态码?

1 投票
1 回答
1122 浏览
提问于 2025-04-17 08:45

在谷歌的应用引擎上:

urlfetch.fetch('http://chart.apis.google.com/chart?chst=d_text_outline&chld=000000|12|h|FFFFFF|_|Tested: 21 Dec') works fine.

但是当我这样做的时候:

text = 'Tested: 21 Dec'  // This ia a variable
my_url = 'http://chart.apis.google.com/chart?chst=d_text_outline&chld=000000|12|h|FFFFFF|_|'+text
urlfetch.fetch(my_url)

现在这会出现一个 400 错误。我发现它没有识别 | 后面的字符。所以,这样只会调用到 'http://chart.apis.google.com/chart?chst=d_text_outline&chld=000000| 这个地址。

有什么建议吗?

1 个回答

2

不确定这是不是问题,但在用字符串构建网址之前,你应该先对这些字符串进行编码:

import urllib
text = urllib.quote_plus('Tested: 21 Dec')  // This ia a variable
my_url = 'http://chart.apis.google.com/chart?chst=d_text_outline&chld=000000|12|h|FFFFFF|_|%s' % text
urlfetch.fetch(my_url)

另外,在大多数情况下,使用字符串格式化,比如 '... %s' % (a,b) 或者 ''.join([a, b]),会比直接用 a + b 更好。

撰写回答