| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > POST-запрос на Java |
| Автор: Се ля ви 14.2.2005, 17:36 |
| есть ли библиотеки специальные или как можно сделать POST-запрос вручную программно на Java? Насколько я понимаю, данные POST-запроса передаются в заголовке HTTP - как этот заголовок называется и в каком формате они там размещаются? |
| Автор: AntonSaburov 14.2.2005, 18:07 |
| Открыть Connection для TCP и эмулировать HTTP. Он вообщем-то не очень сложный. |
| Автор: Domestic Cat 14.2.2005, 18:07 |
| Программно : пользуем HttpURLConnection, у негo есть метоd setRequestMethod(String method) . |
| Автор: Се ля ви 14.2.2005, 18:15 |
| Спасибо. А как параметры постом передать? Я что-то не нашёл... |
| Автор: Domestic Cat 14.2.2005, 18:25 |
| http://java.sun.com/j2se/1.4.2/docs/api/java/net/URLConnection.html#addRequestProperty(java.lang.String,%20java.lang.String) |
| Автор: Се ля ви 16.2.2005, 00:38 |
| Сенкс! Вопрос смежный - как правильно передать в запросе куку? |
| Автор: Domestic Cat 16.2.2005, 01:05 |
| Как обычно - через header поле http://www.rgagnon.com/javadetails/java-0092.html |
| Автор: Се ля ви 16.2.2005, 17:23 | ||||||
Я имел ввиду параметры самого поста - т.е. как будто форму браузер на сервер отправляет. Sun посоветовал вписывать как в GET`е, только в тело запроса. Вообще эта задумка мне нужна для того, что бы автоматически создавать темы в MVNForum`е. Схема простая - разместили статью и нужно сделать её обсуждение в форуме - я тупо выдираю информацию и эмулирую запрос на создание темы - результирующий сервлет не должен понять, что к нему обращается не браузер, а скрипт. Всё это включено в сервлет, который дёргается каждые 10 минут и смотрит, нет ли новых статей.
Почему-то не работает - при обращении к серверу выдаёт java.lang.NullPointerException... Дело, кажется, либо в куках, либо в кодировке запроса... Идеально было бы подсмотреть за тем, какие конкретно запросы шлёт браузер при добавлении темы и мой скрипт - и сравнить их - но то ли я не смог разобраться с директивой netcat под юникс, которая это делает, то ли админы зарубили все порты кроме 7001 у этой машины и я не могу до них достучаться, а разбираться с ними по этому поводу долго... Есть ещё идеи? |
| Автор: Domestic Cat 16.2.2005, 18:36 |
| По-моему, GET запрос нe может быть длиннеe 255 символов. Насчет пост реквестa - тут есть http://www.javaworld.com/javaworld/javatips/jw-javatip34.html |
| Автор: Zandr 18.2.2005, 11:51 |
| GET в HTTP1.1 вроде как может быть длиннее 255 символов, но об этом не все проксики (и иже с ними) знают (и вообще понимают HTTP1.1). А для того чтобы не греть себе голову (и не плясать с дебагером вокруг компа) есть одна http://jakarta.apache.org/commons/httpclient/features.html в проекте Apache Jakarta. Там вам и гет и пост и кукисы и авторизации и SSL.... |
| Автор: MilordReny 22.3.2012, 17:40 | ||
ребята, куда удалился последний пост этой темы??? я в трауре, мне бы рабочий код этого решения Се ля ви, я в трауре!!!
На выходе NULL , в чем может быть проблема? |
| Автор: Samotnik 22.3.2012, 20:08 |
блин, тут 40 строк простого кода, неужели трудно их продебажить и понять самому? Что значит на выходе null? Если речь о возвращаемом значении, то оно впринципе не может быть null, ты его сам, явно, пустой сторой инициализируешь, а условие не дает записать туда null. Если речь о том, что line на выходе пустое, то смотри в условие, либо содержимое reader.readLine(), оно может быть пусто |
| Автор: MilordReny 22.3.2012, 20:26 | ||
| Samotnik, извиняюсь. Я не правильно поставил вопрос. Я хотел обратить внимание на код, все ли с ним нормально. Может что лишнее отправляю. А так спасибо за подсказку, reader.readLine() тоже null выдает. Значит код робит. Я просто пытался код php
преобразовать в java, но мне это не удается, поскольку запрос в php выдает нужный результат, а мой NULL. Если кто сможет помочь, я буду благодарен, денюжку заплочу если надо. Если не хватает информации, готов выложить, просто не знаю как этот скрипт на java заставить работать. |
| Автор: MilordReny 22.3.2012, 22:10 | ||||
| Ураааааа, я разобрался!!! Кароче заменил
на код
Все-таки дело было в коде)) всем спасибо за внимание! |