webentwicklung-frage-antwort-db.com.de

Was ist die Verwendung von List <NameValuePair> oder ArrayList <NameValuePair>?

Ich möchte wissen, was List<NameValuePair> oder ArrayList<NameValuePair> in Android verwendet wird. Speziell, wenn wir Webservices verwenden, die AsyncTask<...> verwenden.

35

NameValuePair ist ein spezielles <Key, Value>-Paar, das zur Darstellung von Parametern in der http-Anforderung verwendet wird, d. H. www.example.com?key=value

NameValuePair ist eine Schnittstelle und wird im Apache http-Client definiert, der in Java weit verbreitet ist, um http-Vorgänge auszuführen. Ein List<NameValuePair> ist nur eine Liste von <key, value>-Paaren und wird als Parameter in der http post-Anfrage verwendet.

HttpPost request = new HttpPost();
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("key", "value"));
request.setEntity(new UrlEncodedFormEntity(params));

httpClient.execute(request);
54
faylon

Einige nützliche Sachen für dich.

List ist eine Schnittstelle und ArrayList ist eine Implementierung der List-Schnittstelle.

List: List ist eine Schnittstelle im Collection-Framework. Mehrere Klassen wie ArrayList, LinkedList implementieren diese Schnittstelle. List ist eine geordnete Sammlung, daher ist die Position eines Objekts von Bedeutung.

ArrayList: Eine ArrayList ist eine Klasse, die zur Laufzeit wachsen kann. Sie können Java-Objekte in einer ArrayList speichern und zur Laufzeit auch neue Objekte hinzufügen.

Sie verwenden ArrayList, wenn Sie Objekte nicht häufig hinzufügen oder entfernen müssen. Wenn Sie ein Objekt entfernen, müssen alle anderen Objekte innerhalb der ArrayList neu positioniert werden. Wenn Sie diese Art von Situation haben, verwenden Sie stattdessen LinkedList.

Weitere Informationen finden Sie unter hier .

12
Harshid

List<NameValuePair> oder ArrayList<NameValuePair> werden verwendet, um Werte von der Android-App an den Server zu senden.

@Override
    protected Header[] doInBackground(String... params) {
        try {
            DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpPost httpPost = new HttpPost(params[1]);

            ArrayList<NameValuePair> nameValuePair = new ArrayList<NameValuePair>();
            nameValuePair.add(new BasicNameValuePair("ssn", params[0]));
            httpPost.setEntity(new UrlEncodedFormEntity(nameValuePair,
                    "UTF-8"));
            HttpResponse httpResponse = httpClient.execute(httpPost);
            HttpEntity httpEntity = httpResponse.getEntity();
            response = EntityUtils.toString(httpEntity);
            allHeaders = httpResponse.getAllHeaders();

        } catch (Exception ex) {

            ex.printStackTrace();

        }
        return allHeaders;
    }

Im obigen Code übergebe ich ein Attribut ssn mit ArrayList<NameValuePair> an den Server. 

9
Anil M
protected String  doInBackground(String... params)
        {
            try
            {
                List<NameValuePair> param = new ArrayList<NameValuePair>();
            param.add(new BasicNameValuePair("username", edName));
            param.add(new BasicNameValuePair("email", edEmail));
            param.add(new BasicNameValuePair("password",  edPassword));
            param.add(new BasicNameValuePair("mobile", edMobile));


            DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpPost httpPost = new HttpPost(params[0]);
            httpPost.setEntity(new UrlEncodedFormEntity(param));

            HttpResponse httpResponse = httpClient.execute(httpPost);

            HttpEntity httpEntity = httpResponse.getEntity();
            InputStream is = httpEntity.getContent();

            BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
            StringBuilder sb = new StringBuilder();
            String line = null;

            while ((line = reader.readLine()) != null)
            {sb.append(line + "\n");
            }

            String  json = sb.toString();
            JSONObject jObj = new JSONObject(json);
            msg= jObj.getString("message");
        }
        catch(Exception e)
        {

            Log.e("error", "Network problem");
        }
        return msg;

    }
}
0
divya prajapati

Verwendet diesen Code zum Hochladen von Daten von der Android-App auf die Serverseite.

  // image file *********************************
 // here send all the sqlite database datas to local sever via HttpPost("url"); 

ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();

nameValuePairs.add(new BasicNameValuePair("job_id","001"));
nameValuePairs.add(new BasicNameValuePair("picture_path",picturejson.toString()));
        nameValuePairs.add(new BasicNameValuePair("date_time",datetime_str));
        nameValuePairs.add(new BasicNameValuePair("location",gpslocation_str));
        try{

        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost("http://Sample/iphone/getinput");
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
        httpclient.execute(httppost);
        HttpResponse response = httpclient.execute(httppost);
        //HttpEntity entity = response.getEntity();
        //is = entity.getContent();
        //HttpResponse response = httpClient.execute(postRequest);
         BufferedReader reader = new BufferedReader(new InputStreamReader(
             response.getEntity().getContent(), "UTF-8"));
                        String sResponse;
                        StringBuilder s = new StringBuilder();

                        while ((sResponse = reader.readLine()) != null) {
                            s = s.append(sResponse);
                        }
                    System.out.println("Response: ");
                    Log.v("hari", "Response : ");
        }catch(Exception e){
        //Log.e("log_tag", "Error in http connection "+e.toString());

        }
0
harikrishnan