我正在使用LoopJ AndroidAsyncHttp库与我的PhP服务器通信。我有个问题。
我需要发送一个这样的JsonObject:
{ "data": 2376845,
"data2": 12545,
"array": [{"data3": "2013-01-10",
"data4": 23532 },
{"data3": "2013-01-11",
"data4": 523526 }]
}但是在javadoc中,唯一的参数是RequestParams,并且没有任何类型的数组。有谁可以帮我?或者给我看一些我能用的东西。谢谢。
发布于 2013-01-11 01:59:15
使用
public void post(Context context, String url, HttpEntity entity, String contentType, AsyncHttpResponseHandler responseHandler)而不是:
public void post(Context context, String url, RequestParams params, AsyncHttpResponseHandler responseHandler)将JSON解析为字符串:
ByteArrayEntity entity = new ByteArrayEntity(bodyAsJson.getBytes("UTF-8"));
client.post(context, newUrl, entity, "application/json", responseHandler);其中,client是一个AsyncHttpClient,而bodyAsJson是一个字符串中的JSON
yourJsonObj.toString()发布于 2014-07-18 21:25:47
我们可以使用javax.json-1.0.2.jar提供的JsonObject类来构建上述json格式。
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格式后
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中提供
https://stackoverflow.com/questions/14264224
复制相似问题