如何将“参数”发送到所有HTTP请求方法?

时间:2012-12-27 15:30:41

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

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

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

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

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

2 个答案:

答案 0 :(得分: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]);

答案 1 :(得分:0)

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

在您的示例(Gengo)中,有一个关于authentication的页面上有一个很好的例子。