Я использую тот же самый код в 2 программах, за исключением хранения данных POST. В первом методе (тот, который работает) я использую NameValuePair, а в другом я использую StringEntity (не работает, но я также не использую какую-либо кодировку). Причина, по которой я не использую кодирование, состоит в том, что она полностью испортила мою строку. Код с StringEntity не будет работать, хотя ... Вот код:Использование StringEntity для отправки запроса POST в Android?
public static String sendNamePostRequest(String urlString, String nameField) {
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(urlString);
StringBuffer sb = new StringBuffer();
try {
post.setEntity(new StringEntity(
"__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE=%2FwEPDwULLTE3NDM5MzMwMzRkZA%3D%3D&__EVENTVALIDATION=%2FwEWBAL%2B%2B4CfBgK52%2BLYCQK1gpH7BAL0w%2FPHAQ%3D%3D&_nameTextBox=John&_zoekButton=Zoek&numberOfLettersField=3"));
HttpResponse response = client.execute(post);
HttpEntity entity = response.getEntity();
BufferedReader br = new BufferedReader(new InputStreamReader(
entity.getContent()));
String in = "";
while ((in = br.readLine()) != null) {
sb.append(in + "\n");
}
br.close();
} catch (Exception e) {
e.printStackTrace();
}
return sb.toString();
}
Этот код делает отправить запрос (понюхал с Wireshark, чтобы проверить), но не возвращает соответствующие данные HTML. Любая причина, почему это может быть?
Пробовали ли вы печатать то, что было исходящее URL? Этот код отправит запрос, но если URL-адрес неверен, вы не получите данные HTML, которые вы ожидаете. – androidnoob
URL-адрес правильный. Для этого есть две причины: 1. Я использую тот же самый URL-адрес в обычных Java-приложениях, которые также отправляют запросы POST, и он отлично работает там. 2. Фактически это дает мне данные URL-адреса, только до перед отправкой запроса, а не после ... – ZimZim