NameValuePair不建议使用openConnection

时间:2015-03-31 20:32:24

标签: java android basicnamevaluepair

我一直在关注如何从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创建名称值对?我到处搜寻。

7 个答案:

答案 0 :(得分:44)

我遇到了同样的问题。来自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));

答案 1 :(得分:28)

您可以使用ContentValues,例如:

ContentValues values = new ContentValues();
values.put("username", name);
values.put("password", password);
database.insert(Table_name, null, values);

答案 2 :(得分:6)

替代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
}

答案 3 :(得分:1)

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

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

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

答案 4 :(得分:1)

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

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

useLibrary 'org.apache.http.legacy'

答案 5 :(得分:1)

您可以根据自己的喜好使用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();
}

答案 6 :(得分:-46)

哟可以改变你的Android Api 21,右击,属性android,点击api 21对我有用