2011-01-25 3 views
3
import org.apache.http.message.BasicNameValuePair; 

private String getServerData(String returnString) {    
InputStream is = null; 

String result = ""; 
//the year data to send 
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
nameValuePairs.add(new BasicNameValuePair("year","1970")); 

//http post 
try{ 
     HttpClient httpclient = new DefaultHttpClient(); 
     HttpPost httppost = new HttpPost(KEY_121); 
     httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
     HttpResponse response = httpclient.execute(httppost); 
     HttpEntity entity = response.getEntity(); 
     is = entity.getContent(); 

}catch(Exception e){ 
     Log.e("log_tag", "Error in http connection "+e.toString()); 
} 
} 

Мои вопросы ...Может ли кто-нибудь объяснить мне этот код?

Что BasicNameValuePair класс делает?

Что этот кусок линии сделать

httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

Что is = entity.getContent(); делать? и я могу передать более одного значения в классе BasicNameValuePair. Могу ли я полностью передать VO вместо этого.

Как и ниже ...

nameValuePairs.add(new BasicNameValuePair("year","1970","sas","saassa","sas","asas")); 

ответ

17

BasicNameValuePair - это объект, в частности контейнер для хранения данных и ключей.

Например, если у вас есть эти данные:

Name: Bob 

Family name: Smith 

Date of birth: 10/03/1977 

, то вы бы сохранить эти данные, как:

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

nameValuePairs.add(new BasicNameValuePair("name","bob")); 

nameValuePairs.add(new BasicNameValuePair("family name","Smith")); 

.... 

Как вы видите, вы выбираете ключ («имя») и данные будут хранится как связанный с ключом («bob»). Это тип структуры данных, используемый для ускорения и упрощения хранения такого рода информации.

На другом конце вам нужен инструмент, чтобы использовать эти данные:

httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

этот код можно разделить на 4 части:

httppost.setEntity 

ли метод, взять URL в качестве аргумента, и пытается извлечь данные (HTML или то, что хранится на этой странице) из этого URL-адреса, используя метод HTTP Post.

новый UrlEncodedFormEntity

Является ли метод, который trasform пару значений ключа данных в чем-то внятным сервером HTTP.

его используют соглашение

&key=input 

, который один из наиболее часто используемых, но помните, что там больше способов сделать это.

nameValuePair 

- это данные, которые вы храните ранее.В этом случае он содержит ключевые формы ввода в html, идентифицированные тегом «input name =». В качестве данных он имеет значение, которое вы хотите передать формам.

is = entity.getContent(); 

HttpEntity - это абстракция, которая поможет вам справиться с возможным результатом. Если веб-сайт недоступен или соединение не работает, HttpEntity сообщит вам. getContent() - это метод, который вы используете для получения тела результата Http, т. е .: html, который веб-сервер отправил вам обратно в качестве входного потока. Если запрос не был успешным, он даст вам нулевое значение.

BasicNameValuePair принимает только куплеты, поэтому вам придется бросать его несколько раз и каждый раз добавлять его в arraylist.

Вы не можете передать его более чем двум значениям, поскольку они будут бессмысленны для представления (ключа, значения) данных.

Надеюсь, это помогло.

+0

Я обновил свой вопрос – theJava

+0

обновлен ... не забудьте отметить как ответ;) – Mascarpone

4

В конце концов, вы делаете запрос HTTP POST с поля «год», имеющий значение «1970».

Как и в случае с веб-формой в этом году.

Немного лишний: BasicNameValuePair выглядит довольно точно: его очень простая (базовая) группа из двух вещей (пары), которые служат в качестве поля формы (имени) и его содержимого (значения).

httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); добавляет, что комбинация года и 1970 года к объекту HttpPost, но с кодировкой (так что там нет «незаконных» вещей).

+0

+1 Для точности и разъяснения хорошо. – Mikaveli

+0

Я обновил свой вопрос – theJava

Смежные вопросы