java - 如何将 ArrayList<string> 传递到 BasicNameValuePair

标签 java android arraylist basicnamevaluepair

我遇到了 BasicNameValuePair 的问题。我想将 ArrayList 传递到 BasicNameValuePair 中。通过 NameValuePair,我想将此 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();

最佳答案

这里的category是一个ArrayList而不是一个String。

尝试替换这一行:

nameValuePairs.add(new BasicNameValuePair("category", category));

这样:

for (int i=0 ;i< category.size();i++) {
    nameValuePairs.add(new BasicNameValuePair("category[]", category.get(i)));
}

您可能需要将“category”替换为“category[]”,具体取决于您的服务器。

关于java - 如何将 ArrayList<string> 传递到 BasicNameValuePair,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37044891/

相关文章:

java - Intellij : Running a program fails, 返回一个完全独立的程序中包含的错误

java - struts.xml映射问题

c# - 从另一个程序的文本字段中插入和检索文本的方法

java - ArrayList Scanner 输入帮助 Java

java - 远程 Edge Webdriver 未启动

带有 Dagger 的 Android Espresso

android - 旋转手机时如何在googlemap v2中旋转箭头

android - 哪个属性在 Android-Studio 2.2 中替换为 "relativePercent"

java - 将 ArrayList 添加到类中 - 它有什么作用?

Java/Android : adding/removing values to/from array by clicking a button?