在java类中,我使用arraylist说包含所有报告列表的报告,这些报告包含reportid,reportname,reporttype等我想要添加到NameValuePair并将Http postmethod调用发送到特定网址。
我想将arraylists - reportname添加到名称值对(org.apache.commons.httpclient.NameValuePair)中,然后使用http client post方法将名称值对数据提交到特定网址。
这是我的名字对
if (validateRequest()) {
NameValuePair[] data = {
new NameValuePair("first_name", firstName),
new NameValuePair("last_name", lastName),
new NameValuePair("email", mvrUser.getEmail()),
new NameValuePair("organization", mvrUser.getOrganization()),
new NameValuePair("phone", mvrUser.getPhone()),
new NameValuePair("website", mvrUser.getWebsite()),
new NameValuePair("city", mvrUser.getCity()),
new NameValuePair("state", mvrUser.getState()),
new NameValuePair("country", mvrUser.getCountry()),
new NameValuePair(**"report(s)", reports**.)
};
请建议我如何将报告arraylist reportname添加到NameValuePair的报告字段中。
- 感谢
@ adarsh 我可以使用泛型这样的东西吗?
reportname = "";
for (GSReport report : reports) {
reportname = reportname + report.getReportName();
reportname += ",";
}
然后将namevalue对添加为
new NameValuePair("report(s)", reportname)
答案 0 :(得分:1)
对于名称值对,使用地图之类的东西......例如。 Hastable(它是同步的),你可以使用其他 实现不同步的Map。
答案 1 :(得分:1)
我建议您将报告ArrayList
序列化为格式为String
的JSON。
new NameValuePair("reports", reportsAsJson)
您可以使用任何JSON序列化库(如http://json.org/java/处的库)构建reportsAsJson变量。它将具有近似这种格式:
reportsAsJson = "[{reportid:'1',reportname:'First Report',reporttype:'Type 1'}, {reportid:'2',reportname:'Seond Report',reporttype:'Type 2'}]";
答案 2 :(得分:0)
嗯,你做不到。 NameValuePair
在构造函数中接受String
个参数。它有意义,因为它用于HTTP POST。
您可以做的是提出一种将Report
对象序列化为String并将此字符串作为字符串参数发送的方法。这样做的一种方法可能是界定Report
类的参数。
reports=reportName1|reportName2|reportName3
假设reports
是ArrayList
,
String reportsStr = "";
for(int i = 0; i < reports.size(); i++) {
reportStr += reportName;
if(i != reports.size() - 1) {
reportsStr += "|";
}
}
NameValuePair nvPair = new NameValuePair("reports", reportsStr);