【发布时间】:2011-09-05 14:08:40
【问题描述】:
我想用 Apache http-components (4.1.2) 执行这个命令
curl --data "strings[]=testOne&string-keys[]=test.one&strings[]=testTwo&string-keys[]=test.two&project=Test" https://api.foo.com/1/string/input-bulk
目标api需要strings和string-keys参数作为array,这意味着重复strings[]以及每个参数的 string-keys[]。
此 curl 命令可以正常工作,但使用 Http 组件,而我得到的参数完全相同。
也许我做错了什么。
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add( new BasicNameValuePair( "project", PROJECT_NAME ) );
for ( Entry entry : newEntries )
{
params.add( new BasicNameValuePair( "string-keys[]", entry.getKey() ) );
params.add( new BasicNameValuePair( "strings[]", entry.getValue() ) );
params.add( new BasicNameValuePair( "context[]", "" ) );
}
URI uri = URIUtils.createURI( "https", "api.foo.com", -1, "/1/string/input-bulk", null, null );
UrlEncodedFormEntity paramEntity = new UrlEncodedFormEntity( params );
logger.info( "POST params : {}", EntityUtils.toString( paramEntity ) );
HttpPost httpRequest = new HttpPost( uri );
httpRequest.setEntity( paramEntity );
HttpResponse response = new DefaultHttpClient().execute( httpRequest );
POST 参数如下所示:
POST params : project=Test&string-keys%5B%5D=test.one&strings%5B%5D=TestOne&string-keys%5B%5D=test.two&strings%5B%5D=TestTwo
如果我将它们放在 curl 中的 --data 后面,它可以工作,但不适用于 HttpCoponents。 谁能解释一下为什么?
提前致谢
【问题讨论】:
标签: java http apache-httpclient-4.x apache-httpcomponents