【问题标题】:Pass one parameter in a Tornado HttpGet with several parameters使用多个参数在 Tornado HttpGet 中传递一个参数
【发布时间】:2011-01-15 18:25:45
【问题描述】:

我想在 Url 中传递一个参数(以更新我的 URL 包含的许多参数之一),如下所示:

httpGet.setURI(new URI(url/user?"nickname"="John") 

Python 中的服务器端:

class GetInfo(BaseHandler):
  def Get(self):
        nickname = self.get_argument("nickname")
        gender = self.get_argument("gender")
        logging.info(nickname)
        logging.info(gender)

  application = tornado.web.Application([
  (r"/", MainHandler),
  (r"/user", GetInfo),
  ])

服务器告诉我不能这样做,因为缺少参数“gender”。 我该怎么办?

谢谢

【问题讨论】:

  • 你在服务器端的日志中看到任何请求吗?你是用模拟器还是真机测试?
  • Android 模拟器本地连接到我的 Tornado WebServer。我刚刚在服务器端看到了“缺少参数“昵称”的错误。通常,我可以这样传递一个参数吗?

标签: python android http-post tornado http-get


【解决方案1】:

首先你的 URI 似乎是错误的。

httpGet.setURI(new URI(url + "/user?nickname=John") 

如果您从模拟器到网络服务器进行测试,并且在同一台机器上同时使用两者,请使用服务器的 IP 地址,而不是 localhost127.0.0.1 之类的地址

例子:

String url = "http://192.168.1.104";
httpGet.setURI(new URI(url + "/user?nickname=John");

编辑: 这个OP的答案如下:

从 tornadoweb.org/documentation 的示例看来,您可以设置默认值。所以你可以试试gender = self.get_argument("gender",None) 之类的东西。所以如果你没有在查询字符串中传递任何gender参数,那么性别应该设置为None

【讨论】:

  • 当然,我这样传递我的网址:httpGet.setURI(new URI(192.168.0.1:8888/user?"nickname"="John")
  • 在我看来,我不能通过一个 URL 参数来传递两个参数。也许你能确认一下?
  • 是的,你可以,在服务器端,虽然在评估第二个参数时它们会出错。我刚刚重新阅读了您的 OP,您可以使用 & 向 url 添加新参数,例如 httpGet.setURI(new URI(url + "/user?nickname=John&gender=M")
  • 是的,这就是重点!如果我不想通过第二个,我只想更新第一个。是否有可能或者我必须使用其他网址声明其他处理程序?
  • 我对 Python 和 Tornado 了解不多,但从 tornadoweb.org/documentation 的示例看来,您可以设置默认值。所以你可以试试gender = self.get_argument("gender",None) 之类的东西。因此,如果您没有在查询字符串中传递任何gender 参数,则应将性别设置为无
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-08
  • 2021-08-24
  • 2018-07-09
  • 2020-08-14
  • 1970-01-01
  • 1970-01-01
  • 2018-07-28
相关资源
最近更新 更多