gpt4 book ai didi

java - 如何使用 HttpComponents 发布数组参数

转载 作者:可可西里 更新时间:2023-11-01 17:14:11 26 4
gpt4 key购买 nike

我想用 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需要stringsstring-keys参数作为array,这意味着重复strings[]和每个参数的 string-keys[]

这个 curl 命令工作正常,但使用 Http-component,而我得到的参数完全相同。

也许我做错了什么。

    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。谁能解释一下为什么?

提前致谢

最佳答案

尝试在您的 httpRequest 中添加 header “application/x-www-form-urlencoded”


httpRequest.addHeader("content-type", "application/x-www-form-urlencoded");
HttpResponse response = new DefaultHttpClient().execute( httpRequest );

希望这能奏效

关于java - 如何使用 HttpComponents 发布数组参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7309237/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com