Здравствуйте форумчане.
Помогите решить задачу.
У меня есть класс отправки POST запроса на сервер, который вызывается в AsyncTask
public class Post {
public static String getPost(String params) {
String res = null;
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://site.ru/post.php");
try {
List pairs = new ArrayList();
pairs.add(new BasicNameValuePair("login", params)); // Вместо этого нужно получить из массива список переменных с параметрами.
httppost.setEntity(new UrlEncodedFormEntity(pairs));
HttpResponse response = httpclient.execute(httppost);
res = EntityUtils.toString(response.getEntity());
} catch (Exception e) {
return "error";
}
return res;
}
}
Как мне передать в AsyncTask и далее в Post класс ассоциативный массив.
Массив создаю подобным образом
Map< String, String > postData = new HashMap< String, String >();
postData.put("login", login.getText().toString());
postData.put("password", password.getText().toString());
Не понятно что нужно указать в tt.execute(???);
И какой тип данных передать на вход в AsyncTask<String, String, String>
Со строками все работает идеально. Но как пытаюсь впихнуть массив, выдает кучу ошибок в разных местах.
PS Вообще задача стоит в том чтобы передавать в класс Post имя переменных и параметры, чтобы класс был универсальным. Может в JAVA есть другие пути решения этой проблемы.
Ассоциативный массив (Map< String, String >) в AsyncTask
Re: Ассоциативный массив (Map< String, String >) в AsyncTask
Поменять дженерик у асинк таска на:
AsyncTask<Map<String, String>, Void, String> mTask ......
И вызвать
mTask.execute(map);
И естественно поменять тип параметров в doInBackground()
AsyncTask<Map<String, String>, Void, String> mTask ......
И вызвать
mTask.execute(map);
И естественно поменять тип параметров в doInBackground()
Даа, есть называются методы геттеры и сеттерыPS Вообще задача стоит в том чтобы передавать в класс Post имя переменных и параметры, чтобы класс был универсальным. Может в JAVA есть другие пути решения этой проблемы.
Java Core -> JDBC -> GoF -> Android SDK ->...
Телепрограмма в твоем смарте Телепрограмма
Телепрограмма в твоем смарте Телепрограмма
Re: Ассоциативный массив (Map< String, String >) в AsyncTask
Большое спасибо!!!
Re: Ассоциативный массив (Map< String, String >) в AsyncTask
Поменял тип параметров в doInBackground.
protected String doInBackground(Map<String, String>... params) {
try {
Log.d(LOG_TAG, "in resours: " + params);
//String resours = Post.getPost(login.getText().toString());
Log.d(LOG_TAG, "out resours: " + resours);
return resours;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
Ошибок нет но в лог летит вместо вводимых данных. Подскажите пожалуйста чего не хватает?
protected String doInBackground(Map<String, String>... params) {
try {
Log.d(LOG_TAG, "in resours: " + params);
//String resours = Post.getPost(login.getText().toString());
Log.d(LOG_TAG, "out resours: " + resours);
return resours;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
Ошибок нет но в лог летит вместо вводимых данных. Подскажите пожалуйста чего не хватает?
Re: Ассоциативный массив (Map< String, String >) в AsyncTask
Map<String, String> map = params[0];
И данные в мапе.
String string = map.get(ключ/значение);
И данные в мапе.
String string = map.get(ключ/значение);
Java Core -> JDBC -> GoF -> Android SDK ->...
Телепрограмма в твоем смарте Телепрограмма
Телепрограмма в твоем смарте Телепрограмма
Re: Ассоциативный массив (Map< String, String >) в AsyncTask
Еще раз большое спасибо. Все заработало как надо....