Appengine URL抓取调试

0 投票
1 回答
852 浏览
提问于 2025-04-16 10:33

我正在尝试用谷歌的应用引擎做一个应该很简单的URL获取操作,但一直失败。

result = urlfetch.fetch(url=apiurl, method=urlfetch.POST)

我还试过用httplib:

conn = httplib.HTTPConnection("api.eve-online.com")
conn.request("POST", "/char/CharacterSheet.xml.aspx", params, headers)

response = conn.getresponse()
self.response.out.write(response.read())

这两种方法返回的错误非常相似,

Traceback (most recent call last):
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\ext\webapp\__init__.py", line 515, in __call__
    handler.get(*groups)
  File "C:\Users\Martin\Documents\google_appengine\martindevans\eveapi.py", line 24, in get
    method=urlfetch.POST)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\api\urlfetch.py", line 241, in fetch
    return rpc.get_result()
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\api\apiproxy_stub_map.py", line 530, in get_result
    return self.__get_result_hook(self)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\api\urlfetch.py", line 315, in _get_fetch_result
    rpc.check_success()
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\api\apiproxy_stub_map.py", line 502, in check_success
    self.__rpc.CheckSuccess()
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\api\apiproxy_rpc.py", line 149, in _WaitImpl
    self.request, self.response)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\api\apiproxy_stub.py", line 80, in MakeSyncCall
    method(request, response)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\api\urlfetch_stub.py", line 133, in _Dynamic_Fetch
    deadline=deadline)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\api\urlfetch_stub.py", line 223, in _RetrieveURL
    connection.request(method, full_path, payload, adjusted_headers)
  File "C:\Python27\lib\httplib.py", line 946, in request
    self._send_request(method, url, body, headers)
  File "C:\Python27\lib\httplib.py", line 986, in _send_request
    self.putheader(hdr, value)
  File "C:\Python27\lib\httplib.py", line 924, in putheader
    str = '%s: %s' % (header, '\r\n\t'.join(values))
TypeError: sequence item 0: expected string, int found

我完全不知道发生了什么。我没有给urlfetch方法提供任何序列,所以我不知道该从哪里开始排查问题。

编辑:应要求,这里是请求头:

headers = { "Content-type": "application/x-www-form-urlencoded" }

不过这应该不是问题,因为第一种方法根本没有设置任何请求头!

1 个回答

5

你是在用Python 2.7吗?它只支持2.5.2版本。虽然2.6版本大部分功能都能用,但2.7版本就不行了。

撰写回答