【问题标题】:How to send "parameters" to all HTTP request methods?如何向所有 HTTP 请求方法发送“参数”?
【发布时间】:2012-12-27 15:30:40
【问题描述】:

我正在尝试为Gengo API 编写一个Java 客户端(使用Apache HttpClient),它使用HTTP GET、POST、PUT 和DELETE。但是,对于它们公开的每个 RESTful API“方法”,您必须将 API 密钥和签名作为“parameters”传递。

这是否意味着查询字符串参数、POST 变量、键值对标头或其他内容?

我想我只是对所有这些不同 HTTP 请求方法的上下文中的“参数”一词的含义感到困惑。换句话说,当我可以使用 GET、POST、PUT 或 DELETE 时,我如何将 API 密钥作为“参数”传递给他们的 API?我的理解是只有 HTTP GET 可以处理查询字符串参数,而 HTTP POST 只能处理 POST 变量。而且我以前从未使用过 PUT 或 DELETE,所以我不确定它们需要什么。

所以我问:我可以使用什么机制通过所有 4 种请求方法发送 API 密钥/签名,或者它们都支持查询字符串参数的处理?提前致谢。

【问题讨论】:

  • 也许这就是你想要的【HTTP测试工具,轻松发送POST/GET/PUT】:stackoverflow.com/questions/1087185/…
  • 谢谢@MrSmith42 但不,这不是我要找的。我在这里真正要问的是不同的请求方法(GET、POST、PUT、DELETE 等)如何以不同的方式处理“参数”。例如,我可能必须为任何 GET 请求附加 API 密钥作为查询字符串参数,并为任何 POST 请求附加相同的密钥作为 POST 变量等。或者它们都可以处理查询字符串参数。或者别的什么。

标签: java api http rest apache-httpclient-4.x


【解决方案1】:

你可以试试这个。它适用于我的带有 POST 请求的 HttpClient 应用程序。

DefaultHttpClient httpClient = new DefaultHttpClient();
httpClient.getParams().setParameter(name, value);
......

比如我设置了连接超时:

httpClient.getParams().setIntParameter(HttpConnectionParams.CONNECTION_TIMEOUT, httpTimeout);

然后,发送(执行)请求:

HttpResponse response = httpClient.execute([My HttpPost instance was here, but I think you can use HttpGet, HttpPut, and HttpDelete here as well]);

【讨论】:

    【解决方案2】:

    所有动词都可以使用请求参数(也称为查询参数),并且无论您是否还发送正文,它们都将以相同的方式提供给服务器。

    在您的示例(Gengo)中有一个关于authentication 的很好的示例。

    【讨论】:

    • 感谢@Andreas Wederbrand (+1) - 但是您的回答仍然让我感到困惑!听起来您是在暗示我应该能够将api_key 作为查询字符串参数附加(例如:http://api.gengo.com/v2/account/stats?api_key=whatever),但在您提供的链接中,PHP 示例将api_key 作为 POST 附加多变的。 这是我问题的根源! 四种方法我应该使用哪一种?或者它们是否都以不同的方式处理“参数”,如果是,如何处理?再次感谢!
    • 换句话说,我可以在每个 API 调用中使用http://api.gengo.com/v2/account/stats?api_key=whatever(无论我是在获取、发布、放置还是删除),或者像链接中的示例一样,我可以必须对这 4 种方法中的每一种使用不同的方法吗?
    • 对。所有动词都允许参数,但我不知道 ff Gengo 在执行 POST 和 PUT 时允许参数。您所能做的就是尝试或询问 Gengo 支持。我猜想即使在 POST 和 PUT 上也可以将其设置为 ?api_key= 。别忘了还要加上 ts= 和 api_sig=
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-11
    • 2016-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多