web-dev-qa-db-ja.com

openConnectionで廃止されたNameValuePair

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で名前と値のペアを作成する方法を知っている人はいますか?私はどこでも探していました。

29
user1949387

ContentValuesを使用できます。次に例を示します。

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

私はちょうど同じ問題に遭遇しました。 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));
43
friederbluemle

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
}
6
Fahim

代わりにhttpmime.jarファイルを使用できます。これは、NameValuePairよりも適切に機能します。こちらからダウンロードできます ダウンロード

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

このjarをプロジェクトに追加してから使用します。

1
Dipankar Baghel

好みに応じてcontentvaluesまたはhashmapを使用できます。

コンテンツ値を使用しました

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

そして、uが投稿しているデータがフォームデータである場合、ここでuはそれをフォームデータに変換することができます

 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();
}
1
ked

アプリケーションでNameValuePairを本当に使用したい場合は、useLibrary 'org.Apache.http.legacy'をgradleに追加できます。

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

useLibrary 'org.Apache.http.legacy'
1
thilina c