У меня проблема, которая, я думаю, может относиться к HttpClient. Я вхожу на сайт и извлекаю данные из него с помощью JSoup. Все работает нормально. Вот моя проблема, когда я хочу войти в другую учетную запись, она отображает те же данные из другой учетной записи. Только когда я убью приложение, я могу войти с разными учетными данными. Я думаю, что моя сессия с веб-сайтом все еще хранится в одном и том же HttpClient и не позволит мне снова войти в систему с другой учетной записью, если я не выйду из системы. Какой был бы лучший способ исправить эту проблему? Использование метода HttpGet для выполнения сценария выхода из системы? Или есть способ сбросить HttpCLient. Благодарю. Код:Уничтожение или закрытие HttpClient Android
public void parseDoc() {
new Thread(new Runnable() {
@Override
public void run() {
final HttpParams params = new BasicHttpParams();
HttpClientParams.setRedirecting(params, true);
httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(
"https://secure.groupfusion.net/processlogin.php");
String HTML = "";
try {
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(
3);
nameValuePairs
.add(new BasicNameValuePair(
"referral_page",
"/modules/gradebook/ui/gradebook.phtml?type=student_view&jli=t&jli=t&jli=t&jli=t&jli=t&jli=t&printable=FALSE&portrait_or_landscape=portrait"));
nameValuePairs.add(new BasicNameValuePair("currDomain",
"beardenhs.knoxschools.org"));
nameValuePairs.add(new BasicNameValuePair("username",
username.getText().toString()));
nameValuePairs.add(new BasicNameValuePair("password",
password.getText().toString()));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
HTML = EntityUtils.toString(response.getEntity());
Document doc = Jsoup.parse(HTML);
Element link = doc.select("a").first();
String linkHref = link.attr("href");
HttpGet request = new HttpGet();
try {
request.setURI(new URI(linkHref));
} catch (URISyntaxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
response = httpclient.execute(request);
InputStream in = response.getEntity().getContent();
BufferedReader reader = new BufferedReader(
new InputStreamReader(in));
StringBuilder str = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
str.append(line);
}
in.close();
HTML = str.toString();
doc = Jsoup.parse(HTML);
Elements divs = doc.getElementsByTag("tbody");
for (Element d : divs) {
if (i == 2) {
finishGrades();
break;
}
i++;
ggg = d.html();
}
} catch (ClientProtocolException e) {
} catch (IOException e) {
}
}
}).start();
}
приложение еще в памяти, поэтому, только когда приложение убито, вы получаете новые данные для нового входа. Создайте возможность удаления учетных данных или хранения учетных данных. Каждый запуск у вас есть новые экземпляры HttpClient, которые не будут проблемой. –
У вас есть возможность хранить учетные данные, используя «Запомнить меня?». Я добавил в приложение. Я не хочу, чтобы пользователь должен был убить приложение для кого-то еще, чтобы войти в систему со своими учетными данными. Во всяком случае, вокруг этого? Благодарю. – Eli
Убедитесь, что учетные данные удалены из настроек или в любом месте, где вы их храните. Изучите, не вызвало ли это вашу проблему. Предложение: Перезаписывайте их каждый раз, когда новый пользователь регистрируется, а затем приступайте к логину. –