JavaAndroid:如何向API发出复杂的POST请求?

JavaAndroid:如何向API发出复杂的POST请求?,android,post,request,Android,Post,Request,例如,我喜欢这样的API: array('make\u event'=array('event\u id'=event id','start\u date'=some date','end\u date'=some else date)) 我试图通过NameValuePair的列表来完成,但我做不到,因为没有对象的NameValuePair构造函数 主要问题是将“数组的数组”传递给setEntity方法。您应该能够使用嵌套的JSONArrays;一旦创建了复杂数组,只需使用toString()并

例如,我喜欢这样的API:
array('make\u event'=array('event\u id'=event id','start\u date'=some date','end\u date'=some else date))

我试图通过NameValuePair的列表来完成,但我做不到,因为没有对象的
NameValuePair
构造函数


主要问题是将“数组的数组”传递给
setEntity
方法。

您应该能够使用嵌套的
JSONArray
s;一旦创建了复杂数组,只需使用
toString()
并将结果插入到
NameValuePair

我找到了解决方案,如果您需要在不使用JSON的情况下发出这样的请求,它将如下所示:

List<NameValuePair> pairs = new ArrayList<NameValuePair>();
pairs.add(new BasicNameValuePair("make_event[event_id]", "My new Event"));

所有这些代码都将生成standart POST请求。

不,它不起作用。当我尝试在BasicNameValuePair中传递转换为字符串的JSONArray时,服务认为它是一对,而您所要做的就是创建一个
BasicNameValuePair
s的数组,其中一些对上的值将是转换为字符串的
JSONObject
。或者您可以编写一个函数,在
JSONArray
中循环,并创建一个
BasicNameValuePair[]
数组,其子级值是JSON值的字符串表示形式。
post.setEntity(new UrlEncodedFormEntity(pairs));