Многочисленные трудности с классом HttpURLConnection в Java для Android - PullRequest
0 голосов
/ 13 июля 2011

- Обновление -
Извиняюсь за тех, кто мне помог, оказывается, это всего лишь проблема с отладчиком Eclipse. Заподозрив, что это ведет меня неправильно, я установил пару файлов System.out.println для просмотра переменных, и в соответствии с ними они меняются, и что отладчик просто показывает мне старую информацию по любой причине. Понятия не имею, почему это происходит, но важно то, что код, очевидно, действительно работает.

Я работаю над способом предоставления доступа к Твиттеру для приложения Android, и у меня возникают ошибки при настройке соединения HttpURLConnection. Я создаю объект соединения, как обычно, используя функцию openconnection URL-адреса, затем приводя его к HttpURLConnection, и когда я впоследствии запускаю SetRequestMethod ("POST") для соединения, он абсолютно ничего не делает. Когда я запускаю код в отладчике построчно, по мере прохождения этой строки метод запроса остается по умолчанию («GET»). Кто-нибудь имеет представление о том, почему это может происходить? У меня та же проблема с setDoOutput (true), также ничего не меняющим. Однако добавление свойства запроса все еще работает. Я искал вокруг и не смог найти ничего по этой проблеме, даже другой человек, сообщающий об этих проблемах.

1 Ответ

0 голосов
/ 13 июля 2011

Я не уверен, что использование HttpURLConnection является лучшим здесь.

Вы пробовали следующим образом?

// Building the POST request
final BasicNameValuePair message   = new BasicNameValuePair("yourField", "yourContent");
final List<NameValuePair> list     = new ArrayList<NameValuePair>(1);

list.add(message);

final HttpPost httppost = createHttpPost(UrlEncodedFormEntity(list));

// Building the HTTP client
final HttpParams httpParameters = new BasicHttpParams();

HttpConnectionParams.setConnectionTimeout(httpParameters, YOUR_CHOSEN_CONN_TIMEOUT);
HttpConnectionParams.setSoTimeout        (httpParameters, YOUR_CHOSEN_SO_TIMEOUT);

final HttpClient httpClient = new DefaultHttpClient(httpParameters);

// Execution of the POST request
final HttpResponse response = httpClient.execute(httppost);

Так я обычно делаю, без проблем.

[EDIT: 04-25-2014] Apache HttpClient был лучшим подходом для Froyo и предыдущих версий. Теперь, согласно этой статье из блога разработчиков Android (написанной после этих вопросов и ответов), лучше использовать URLConnection.

...