首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用HttpComponents发布数组参数

如何用HttpComponents发布数组参数
EN

Stack Overflow用户
提问于 2011-09-05 14:08:40
回答 1查看 5K关注 0票数 1

我想用(4.1.2)来执行这个命令。

代码语言:javascript
复制
 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[]

这个curl命令工作良好,但使用Http-组件,而我得到的参数完全相同。

也许我做错了什么。

代码语言:javascript
复制
    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 );

这篇文章的内容如下:

代码语言:javascript
复制
POST params : project=Test&string-keys%5B%5D=test.one&strings%5B%5D=TestOne&string-keys%5B%5D=test.two&strings%5B%5D=TestTwo

如果我把它们放在后面--数据是卷曲的,它可以工作,但不适用于HttpCoponents。有人能解释一下为什么吗?

提前感谢

EN

回答 1

Stack Overflow用户

发布于 2011-09-05 14:53:25

尝试在您的httpRequest中添加标题“application/x form-urlencoded”。

代码语言:javascript
复制
    httpRequest.addHeader("content-type", "application/x-www-form-urlencoded");
    HttpResponse response = new DefaultHttpClient().execute( httpRequest );

希望这能起作用

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7309237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档