如何将 ArrayList<string> 传递给 BasicNameValuePair
How to pass ArrayList<string> into BasicNameValuePair
我遇到 BasicNameValuePair 问题。我想将 ArrayList 传递给 BasicNameValuePair。通过NameValuePair,我想Post这个arrayList到Php文件。但是我收到一个错误。请帮帮我。谢谢。
这是我的 Android 代码:
protected String doInBackground(String... params) {
InputStream inputStream = null;
String result = null;
Intent in = getIntent();
String city = in.getStringExtra(("city"));
ArrayList<String> category = in.getStringArrayListExtra("category"); **//Here i am passing multiple value of category.**
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("city", city));
nameValuePairs.add(new BasicNameValuePair("category", category)); **//Here error is coming(BasicNameValuePair cannot applied to <string, java.util.ArrayList<java.lang.String>)**
DefaultHttpClient httpClient = new DefaultHttpClient(new BasicHttpParams());
HttpPost httppost = new HttpPost("http://10.0.2.2/qsearch.php");
try {
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpClient.execute(httppost);
HttpEntity entity = response.getEntity();
inputStream = entity.getContent();
}
catch(Exception e){
e.printStackTrace();
}
try{
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "utf-8"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
result = sb.toString();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (inputStream != null) inputStream.close();
} catch (Exception squish) {
}
return result;
}
}
@Override
protected void onPostExecute(String result){
myJSON=result;
showList();
}
}
GetDataJSON g=new GetDataJSON();
g.execute();
这里的类别是 ArrayList 而不是 String。
尝试替换此行:
nameValuePairs.add(new BasicNameValuePair("category", category));
有了这个:
for (int i=0 ;i< category.size();i++) {
nameValuePairs.add(new BasicNameValuePair("category[]", category.get(i)));
}
根据您的服务器,您可能需要将 key
"category"
替换为 "category[]"
。
我遇到 BasicNameValuePair 问题。我想将 ArrayList 传递给 BasicNameValuePair。通过NameValuePair,我想Post这个arrayList到Php文件。但是我收到一个错误。请帮帮我。谢谢。
这是我的 Android 代码:
protected String doInBackground(String... params) {
InputStream inputStream = null;
String result = null;
Intent in = getIntent();
String city = in.getStringExtra(("city"));
ArrayList<String> category = in.getStringArrayListExtra("category"); **//Here i am passing multiple value of category.**
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("city", city));
nameValuePairs.add(new BasicNameValuePair("category", category)); **//Here error is coming(BasicNameValuePair cannot applied to <string, java.util.ArrayList<java.lang.String>)**
DefaultHttpClient httpClient = new DefaultHttpClient(new BasicHttpParams());
HttpPost httppost = new HttpPost("http://10.0.2.2/qsearch.php");
try {
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpClient.execute(httppost);
HttpEntity entity = response.getEntity();
inputStream = entity.getContent();
}
catch(Exception e){
e.printStackTrace();
}
try{
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "utf-8"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
result = sb.toString();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (inputStream != null) inputStream.close();
} catch (Exception squish) {
}
return result;
}
}
@Override
protected void onPostExecute(String result){
myJSON=result;
showList();
}
}
GetDataJSON g=new GetDataJSON();
g.execute();
这里的类别是 ArrayList 而不是 String。
尝试替换此行:
nameValuePairs.add(new BasicNameValuePair("category", category));
有了这个:
for (int i=0 ;i< category.size();i++) {
nameValuePairs.add(new BasicNameValuePair("category[]", category.get(i)));
}
根据您的服务器,您可能需要将 key
"category"
替换为 "category[]"
。