Я хочу знать о том, что использует List<NameValuePair>
или ArrayList<NameValuePair>
в android? Особенно, когда мы используем веб-службы, используя AsyncTask<...>
Что такое использование List <NameValuePair> или ArrayList <NameValuePair>
Ответ 1
NameValuePair - это специальная пара <Key, Value>
, которая используется для представления параметров в HTTP-запросе, т.е. www.example.com?key=value
.
NameValuePair является интерфейсом и определяется в http-клиенте apache, который широко используется в java для обработки операций HTTP. A List<NameValuePair>
- это всего лишь список пар <Key, Value>
и будет использоваться в качестве параметров в запросе http post.
HttpPost request = new HttpPost();
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("key", "value"));
request.setEntity(new UrlEncodedFormEntity(params));
httpClient.execute(request);
Ответ 2
Некоторые полезные вещи для вас.
List
- это интерфейс, а ArrayList
- реализация интерфейса List
.
List
: List
- это интерфейс в рамках коллекции. несколько классов, таких как ArrayList
, LinkedList
реализуют этот интерфейс. List
- упорядоченный набор, поэтому положение объекта имеет значение.
ArrayList
: ArrayList
- это класс, который может расти во время выполнения. вы можете хранить java-объекты в ArrayList
, а также добавлять новые объекты во время выполнения.
Вы будете использовать ArrayList
, если вам не нужно добавлять или удалять объекты из него. Поскольку, когда вы удаляете объект, все остальные объекты должны быть помещены внутри ArrayList
, если у вас такая ситуация, попробуйте вместо этого использовать LinkedList
.
Вы можете найти более подробную информацию из здесь.
Ответ 3
List<NameValuePair>
или ArrayList<NameValuePair>
используются для отправки значений из приложения android на сервер.
@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;
}
В приведенном выше коде я передаю атрибут ssn
на сервер, используя ArrayList<NameValuePair>
.
Ответ 4
Используется этот код для загрузки данных из приложения android на сервер.
// 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());
}
Ответ 5
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;
}
}