Форум программистов, компьютерный форум, киберфорум
Наши страницы
Java: Сети
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/12: Рейтинг темы: голосов - 12, средняя оценка - 4.83
Chinook
1 / 1 / 0
Регистрация: 12.06.2011
Сообщений: 68
1

Посылка данных на чужой сервер через http post - проблема

27.09.2011, 03:19. Просмотров 2431. Ответов 5
Метки нет (Все метки)

Привет!

Есть вот такой код:
Java
1
2
3
4
5
6
7
8
9
10
URL url = new URL(hostString);
HttpURLConnection urlConnector = (HttpURLConnection)url.openConnection();
  
urlConnector.setDoOutput(true);
urlConnector.setRequestMethod('POST');
DataOutputStream dos = new DataOutputStream(urlConnector.getOutputStream());
dos.writeBytes(<всякие данные>);
dos.writeBytes('
');
dos.close();
Все улетает. Но! Пока я не добавлю вот это:
Java
1
2
InputStream is = urlConnector.getInputStream();
// ...
на том сервере информация не появляется. При этом самое интересное, после открытия потока я всегда получаю одно и тоже:
java.io.IOException: Server returned HTTP response code: 500 for URL: http: ......
Что за дела? Ну, с ошибкой - фиг с ней, а вот почему я должен ждать открытия потока? Это:
1. Так и надо.
2. Мой код - полный отстой.
3. Что-то не в порядке с сервером.
4. Это что-то другое
5. А фиг его знает.

нужное подчеркнуть :-)

Никто не поможет?

Заранее благодарен!
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.09.2011, 03:19
Ответы с готовыми решениями:

http server,http сервер, post
Необходимо реализовать функцию post для http сервера Косяк как принимать сообщение отправленное -...

Отправка данных JSON через POST-запрос на сервер https
Прошу помочь, может кто имел опыт отправки и получения данных посредством json через POST-запрос на...

Отправка файла на сервер http post запросом
Здравствуйте. Задача следующая - нужно отправить HTTP POST запрос, содержащий несколько переменных...

Как проксировать чужой сайт (https) через свой сервер (домен)?
Добрый день. Есть свой домен, хостинг (на нём nginx) и пустой index.html (все доступы/управлялки)....

Работа с Dropbox через HTTP (GET/POST)
Задача: работать с Dropbox(скачивать/закачивать файлы) через Dropbox API с помощью HTTP запросов. Я...

5
cryozot
0 / 0 / 0
Регистрация: 02.08.2011
Сообщений: 64
27.09.2011, 08:25 2
Наверное, не стоит вызывать dos.close(), так как это (javadoc) 'may free network resources associated with this instance'. Вместо этого можно попробовать вызвать dos.flush().

Ещё можно проверить, что же на самом деле происходит на сервере. Посмотреть, что за запрос на самом деле туда приходит и откуда берётся код 500.

Это всё на правах гипотезы, так как я сам никогда не использовал HttpURLConnection. Вместо этого рекомендую jakarta commons HTTPClient - более удобная библиотека для работы с HTTP, потому как ближе к ключевым абстракциям протокола, чем механизм URLConnection.
0
mselez
0 / 0 / 0
Регистрация: 22.07.2009
Сообщений: 457
27.09.2011, 19:23 3
наверное, 1, потому что ничего никуда не улетает пока инпут не откроете. А почему так, то 5.
0
Chinook
1 / 1 / 0
Регистрация: 12.06.2011
Сообщений: 68
27.09.2011, 23:47  [ТС] 4
>>Наверное, не стоит вызывать dos.close(), так как это (javadoc) 'may
...
>>можно попробовать вызвать dos.flush().
Наверное, не поможет, мне уже некогда проверять, но в пользу этого предположения то, что httpclient в результате отсылки тоже возвращает поток на чтение, скорее всего действительно п.1

>>Ещё можно проверить, что же на самом деле происходит на сервере.
>>Посмотреть, что за запрос на самом деле туда приходит и откуда
>>берётся код 500.
Я, конечно, могу предположить, что он где-то в Северное Америке (или tracert посмотреть), но вряд ли мне станет от этого легче. :-)

>>Это всё на правах гипотезы, так как я сам никогда не использовал
...
>>ближе к ключевым абстракциям протокола, чем механизм URLConnection.
Да, спасибо, я так и сделал, у нас в другом проекте он используется.
0
mselez
0 / 0 / 0
Регистрация: 22.07.2009
Сообщений: 457
28.09.2011, 04:10 5
Это нормальное поведение, потому что http предполагает схему запрос-ответ. Пока клиент не продемонстрировал готовность принимать ответ (не открыл инпут), то и нет смысла открывать сокет и слать запрос на сервер.
0
Chinook
1 / 1 / 0
Регистрация: 12.06.2011
Сообщений: 68
28.09.2011, 22:38  [ТС] 6
Ну вот все и прояснилось, спасибо.
0
28.09.2011, 22:38
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.09.2011, 22:38

Русский Post запрос в базу через http
Кто в курсе этого метода связи с БД на удаленном сервере, как через POST отправить переменные с...

Посылка http запроса.
socket только сегодня начал учить. Хочу получить от сайта html код. Вот программа: #include...

$http.post передача данных с сервера
При передаче файла .json выдаёт такую ошибку XMLHttpRequest cannot load http://путь у .json...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.