33

我一直在关注有关如何从 android 应用程序将数据插入数据库的在线教程,并且除了这个小部分之外,一切正常

List<NameValuePair> params = new ArrayList<>();
params.add(new BasicNameValuePair("username", username));
params.add(new BasicNameValuePair("password", password));

NameValuePair 和 BasicNameValuePair 已被弃用,取而代之的是openConnection(). 我怎样才能创建一个新的价值关联呢?http://developer.android.com/reference/java/net/URL.html#openConnection()

有谁知道如何使用 openConnection 创建名称值对?我到处寻找。

4

7 回答 7

45

我刚刚遇到了同样的问题。org.apache.http已在 API中删除不推荐使用的类23

我最终使用了android.util.Pair. 它工作得很好,代码也更短:

List<Pair<String, String>> params = new ArrayList<>();
params.add(new Pair<>("username", username));
params.add(new Pair<>("password", password));
于 2015-10-12T03:39:39.377 回答
32

您可以使用ContentValues,例如:

ContentValues values = new ContentValues();
values.put("username", name);
values.put("password", password);
database.insert(Table_name, null, values);
于 2015-04-01T15:08:36.423 回答
7

替代 NameValuePair。您也可以从中获取名称和值,如下所述。这里的关键是一个名字。

创造:

ContentValues values = new ContentValues();
values.put("key1", "value1");
values.put("key2", "value2");

获取键和值:

for (Map.Entry<String, Object> entry : values.valueSet()) {
    String key = entry.getKey(); // name
    String value = entry.getValue().toString(); // value
}
于 2015-09-14T07:15:02.460 回答
2

您可以根据自己的喜好使用 contentvalues 或 hashmap。

我使用了内容值

ContentValues contentValues = new ContentValues();
contentValues.put("key1","value1");
contentValues.put("key2","value2");

如果您发布的数据是表单数据,那么您可以将其转换为表单数据

 public String getFormData(ContentValues contentValues) throws UnsupportedEncodingException {

    StringBuilder sb = new StringBuilder();
    boolean first = true;
    for (Map.Entry<String, Object> entry : contentValues.valueSet()) {
        if (first)
            first = false;
        else
            sb.append("&");

        sb.append(URLEncoder.encode(entry.getKey(), "UTF-8"));
        sb.append("=");
        sb.append(URLEncoder.encode(entry.getValue().toString(), "UTF-8"));
    }
    return sb.toString();
}
于 2016-09-24T13:22:14.733 回答
1

您可以使用 httpmime.jar 文件代替它,这将比 NameValuePair 更好。你可以从这里下载,下载

MultipartEntity multi = new MultipartEntity();
multi.addPart("name", new StringBody("Raj"));
multi.addPart("Id", new StringBody("011"));

将此 jar 添加到您的项目中,然后使用它。

于 2015-06-22T09:25:48.697 回答
1

如果你真的想NameValuePair在你的应用程序中使用,你可以添加useLibrary 'org.apache.http.legacy' 到你的 gradle:

buildtypes{
    //------------
    //----------
}

useLibrary 'org.apache.http.legacy'
于 2016-05-17T06:56:56.953 回答
-46

你可以在 21 中更改你的 android Api,右键单击,属性 android,单击 api 21 对我有用

于 2015-04-05T04:49:11.530 回答