首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LoopJ AndroidAsyncHttp和JSON POST数组

LoopJ AndroidAsyncHttp和JSON POST数组
EN

Stack Overflow用户
提问于 2013-01-11 01:56:05
回答 2查看 14.3K关注 0票数 8

我正在使用LoopJ AndroidAsyncHttp库与我的PhP服务器通信。我有个问题。

我需要发送一个这样的JsonObject:

代码语言:javascript
复制
{      "data": 2376845,      
       "data2": 12545,      
       "array": [{"data3": "2013-01-10",          
                     "data4": 23532        },       
                    {"data3": "2013-01-11",             
                     "data4": 523526   }]
}

但是在javadoc中,唯一的参数是RequestParams,并且没有任何类型的数组。有谁可以帮我?或者给我看一些我能用的东西。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-11 01:59:15

使用

代码语言:javascript
复制
public void post(Context context, String url, HttpEntity entity, String contentType, AsyncHttpResponseHandler responseHandler)

而不是:

代码语言:javascript
复制
public void post(Context context, String url, RequestParams params, AsyncHttpResponseHandler responseHandler)

将JSON解析为字符串:

代码语言:javascript
复制
ByteArrayEntity entity = new ByteArrayEntity(bodyAsJson.getBytes("UTF-8"));
client.post(context, newUrl, entity, "application/json", responseHandler);

其中,client是一个AsyncHttpClient,而bodyAsJson是一个字符串中的JSON

代码语言:javascript
复制
yourJsonObj.toString()
票数 23
EN

Stack Overflow用户

发布于 2014-07-18 21:25:47

我们可以使用javax.json-1.0.2.jar提供的JsonObject类来构建上述json格式。

代码语言:javascript
复制
JsonObject jo = Json.createObjectBuilder()
            .add("data", 2376845)
            .add("data2", 12545)
            .add("array",Json.createArrayBuilder()
                    .add(Json.createObjectBuilder().add("data3", "2013-01-10").add("data4", 23532).build())
                    .add(Json.createObjectBuilder().add("data3", "2013-01-11").add("data4", 523526).build()))
                    .build();

构建json格式后

代码语言:javascript
复制
        AsyncHttpClient client=new AsyncHttpClient();
        Request request = client.preparePost(your host URL).
        setHeader("Content-Type","application/json").
        setHeader("Content-Length", ""+jo.toString().length()).setHeader("Authorization","Basic fgfgfgfhfhtetet=").
        setBody(jo.toString()).build();
        ListenableFuture<Response> r = null;
        //ListenableFuture<Integer> f= null;
        try{
        r = client.executeRequest(request);
        System.out.println(r.get().getResponseBody());
        }catch(IOException e){

        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (ExecutionException e) {
            e.printStackTrace();
        }

如果你需要基本的身份验证,你需要添加一个使用base64编码的username:password组合的密钥到标题中,如果没有,在这种情况下我将它添加到标题中

大多数情况下,这将为您工作

注意:AsyncHttpClient、ListenableFuture类在async-http-client-1.7.5.jar中提供

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

https://stackoverflow.com/questions/14264224

复制
相关文章

相似问题

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