Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / HttpURLConnection + POST / 16 сообщений из 16, страница 1 из 1
04.09.2015, 22:34
    #39043799
НикоДимиден
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HttpURLConnection + POST
Здравствуйте. Подскажите пожалуйста, как правильно передать POST запрос который я привел в HTML но нужно такой же сформировать в Java


Вот так в HTML мы формируем наш запрос (правильный вариант)
Код: html
1.
2.
3.
4.
5.
6.
7.
<form target="pole" id="transcribe" action="http://MySite.com/transcription777/" method="POST">
            <textarea id="text_to_transcribe" name="text_to_transcribe" required="required">Передаем текст</textarea>
            <input type="radio" name="output_dialect" value="br" >TEST 


            <input  id="submit" name="submit" type="submit" value="Отправить запрос" />
    </form>






Вот так я передаю запрос без параметров и могу получить данные ( ВОПРОС: как передать с параметрами запрос, так как это мы сделали в HTML):
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
private static String getContent() throws IOException {
        BufferedReader reader=null;
        try {
            URL url=new URL("http://MySite.com/transcription777/");
            HttpURLConnection c=(HttpURLConnection)url.openConnection();
            
            //заголовки (пока не использую)
              /*
               * //conn.setRequestProperty("Charsert", "UTF-8");
		  //conn.setRequestProperty("content-type","text/html");
		  //conn.setRequestProperty("Content-type", "application/x-java-serialized-
               * 
               */
            
            c.setRequestMethod("POST");
            c.setReadTimeout(10000); 
            c.setDoOutput(true);
            c.connect();
            
            OutputStream output = c.getOutputStream();
                
            reader= new BufferedReader(new InputStreamReader(c.getInputStream()));
            
            StringBuilder buf=new StringBuilder();
            String line=null;
            while ((line=reader.readLine()) != null) {
                buf.append(line + "\n");
                System.out.println("buf "+line);
            }
            return(buf.toString());
        }
        finally {
            if (reader != null) {
                reader.close();
            }
        }
    }
...
Рейтинг: 0 / 0
04.09.2015, 22:41
    #39043802
НикоДимиден
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HttpURLConnection + POST
То есть отправить запрос, как будто мы уже нажали кнопку submit



Код: html
1.
2.
3.
4.
5.
6.
7.
<form target="pole" id="transcribe" action="http://MySite.com/transcription777/" method="POST">
            <textarea id="text_to_transcribe" name="text_to_transcribe" required="required">hello</textarea>
            <input type="radio" name="output_dialect" value="br" >TEST&nbsp;


            <input  id="submit" name="submit" type="submit" value="Отправить запрос" />
    </form>
...
Рейтинг: 0 / 0
05.09.2015, 01:31
    #39043841
НикоДимиден
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HttpURLConnection + POST
И еще вопрос, как обычно обрабатывают данные или как можно их обработать?
...
Рейтинг: 0 / 0
05.09.2015, 12:33
    #39043928
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HttpURLConnection + POST
...
Рейтинг: 0 / 0
05.09.2015, 12:48
    #39043934
НикоДимиден
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HttpURLConnection + POST
забыл ник,
Спасибо, но мне нужно именно HttpURLConnection
...
Рейтинг: 0 / 0
05.09.2015, 13:02
    #39043944
НикоДимиден
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HttpURLConnection + POST
Так а как обычно обрабатывают данные, если пришла HTML страничка и мне нужно вывести определенное значение определенного класса?
...
Рейтинг: 0 / 0
05.09.2015, 16:54
    #39044008
nb_brain
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HttpURLConnection + POST
НикоДимиден,

Нагуглил за полторы минуты :) тынц

Там усе есть:

сначала там делается лист с параметрами:
Код: java
1.
2.
3.
4.
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("firstParam", paramValue1));
params.add(new BasicNameValuePair("secondParam", paramValue2));
params.add(new BasicNameValuePair("thirdParam", paramValue3));



потом Во writter они пишутся как стринга таким вот методом.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
private String getQuery(List<NameValuePair> params) throws UnsupportedEncodingException
{
    StringBuilder result = new StringBuilder();
    boolean first = true;

    for (NameValuePair pair : params)
    {
        if (first)
            first = false;
        else
            result.append("&");

        result.append(URLEncoder.encode(pair.getName(), "UTF-8"));
        result.append("=");
        result.append(URLEncoder.encode(pair.getValue(), "UTF-8"));
    }

    return result.toString();
}




Вообще гугл крутая штука ;)
...
Рейтинг: 0 / 0
06.09.2015, 00:34
    #39044132
НикоДимиден
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HttpURLConnection + POST
nb_brainНикоДимиден,

Нагуглил за полторы минуты :) тынц

Там усе есть:

сначала там делается лист с параметрами:
Код: java
1.
2.
3.
4.
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("firstParam", paramValue1));
params.add(new BasicNameValuePair("secondParam", paramValue2));
params.add(new BasicNameValuePair("thirdParam", paramValue3));



потом Во writter они пишутся как стринга таким вот методом.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
private String getQuery(List<NameValuePair> params) throws UnsupportedEncodingException
{
    StringBuilder result = new StringBuilder();
    boolean first = true;

    for (NameValuePair pair : params)
    {
        if (first)
            first = false;
        else
            result.append("&");

        result.append(URLEncoder.encode(pair.getName(), "UTF-8"));
        result.append("=");
        result.append(URLEncoder.encode(pair.getValue(), "UTF-8"));
    }

    return result.toString();
}




Вообще гугл крутая штука ;)

Сравнил HttpClient с HttpURLConnection и сделал вывод что HttpClient удобнее.
...
Рейтинг: 0 / 0
06.09.2015, 14:46
    #39044272
НикоДимиден
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HttpURLConnection + POST
nb_brainНикоДимиден,

Нагуглил за полторы минуты :) тынц

Там усе есть:

сначала там делается лист с параметрами:
Код: java
1.
2.
3.
4.
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("firstParam", paramValue1));
params.add(new BasicNameValuePair("secondParam", paramValue2));
params.add(new BasicNameValuePair("thirdParam", paramValue3));



потом Во writter они пишутся как стринга таким вот методом.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
private String getQuery(List<NameValuePair> params) throws UnsupportedEncodingException
{
    StringBuilder result = new StringBuilder();
    boolean first = true;

    for (NameValuePair pair : params)
    {
        if (first)
            first = false;
        else
            result.append("&");

        result.append(URLEncoder.encode(pair.getName(), "UTF-8"));
        result.append("=");
        result.append(URLEncoder.encode(pair.getValue(), "UTF-8"));
    }

    return result.toString();
}




Вообще гугл крутая штука ;)

А обязательно это делать с использование этого класса - BasicNameValuePair ? Этот класс из библиотеки Апач , просто даже не понятно что и где нужно качать что бы можно было использовать этот класс ?
...
Рейтинг: 0 / 0
06.09.2015, 14:50
    #39044276
НикоДимиден
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HttpURLConnection + POST
А что этот класс делает BasicNameValuePair? И где можно узнавать подобную информацию что бы было нормально описано с примерами как справочник по MQL4/MQL5?
...
Рейтинг: 0 / 0
06.09.2015, 18:26
    #39044331
НикоДимиден
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HttpURLConnection + POST
nb_brainНикоДимиден,

Нагуглил за полторы минуты :) тынц

Там усе есть:

сначала там делается лист с параметрами:
Код: java
1.
2.
3.
4.
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("firstParam", paramValue1));
params.add(new BasicNameValuePair("secondParam", paramValue2));
params.add(new BasicNameValuePair("thirdParam", paramValue3));



потом Во writter они пишутся как стринга таким вот методом.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
private String getQuery(List<NameValuePair> params) throws UnsupportedEncodingException
{
    StringBuilder result = new StringBuilder();
    boolean first = true;

    for (NameValuePair pair : params)
    {
        if (first)
            first = false;
        else
            result.append("&");

        result.append(URLEncoder.encode(pair.getName(), "UTF-8"));
        result.append("=");
        result.append(URLEncoder.encode(pair.getValue(), "UTF-8"));
    }

    return result.toString();
}




Вообще гугл крутая штука ;)


Спасибо, получилось. Я не ожидал что нужно будет столько много манипуляций совершить, что бы добавить простое тело запроса. Куда проще использовать httpClient. Не могли бы Вы ответить на мои вопросы, которые я задал? Для меня важно понять как все работает изнутри и остальное то что я написал в качестве вопроса.
...
Рейтинг: 0 / 0
06.09.2015, 18:34
    #39044338
НикоДимиден
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HttpURLConnection + POST
nb_brain,
Так а как обычно обрабатывают ответ, если приходит HTML страничка? Допустим мне нужно значение какого то одного класса.
Или что, перебирать все символы на определенное совпадение и вытаскивать значение таким образом? Так мне не очень нравитсья, хотя работать будет, я уже такое делал.
...
Рейтинг: 0 / 0
06.09.2015, 22:22
    #39044448
lleming
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HttpURLConnection + POST
Тогда берем html парсер и парсим страничку выковыривая DOM элементы. Если ответ сервера валидная xhtml страница то тут все проще. Если чистый html то берем какой нибудь парсер и пробуем распарсить страницу. JSOUP говорят неплохо парсит даже html.
...
Рейтинг: 0 / 0
07.09.2015, 01:17
    #39044520
НикоДимиден
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HttpURLConnection + POST
llemingТогда берем html парсер и парсим страничку выковыривая DOM элементы. Если ответ сервера валидная xhtml страница то тут все проще. Если чистый html то берем какой нибудь парсер и пробуем распарсить страницу. JSOUP говорят неплохо парсит даже html.
Во ! Спасибо! Замечательно, все работает как швейцарские часы!)
...
Рейтинг: 0 / 0
07.09.2015, 09:16
    #39044586
ivanra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HttpURLConnection + POST
НикоДимиденА что этот класс делает BasicNameValuePair? И где можно узнавать подобную информацию что бы было нормально описано с примерами как справочник по MQL4/MQL5?
BasicNameValuePair тут совсем не обязателен. Можно, например, обойтись таблицей
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Map<String,String> params = new HashMap<String,String>();
params.put("firstParam", paramValue1);
params.put("secondParam", paramValue2);
params.put("thirdParam", paramValue3);
// и точно так же
for (Map.Entry<String, String> entry: params.entrySet()) {
	builder
	.append(builder.length()==0?"":"&")
	.append(URLEncoder.encode(entry.getKey(),"utf-8"))
	.append("=")
	.append(URLEncoder.encode(entry.getValue(),"utf-8"));
}
...
Рейтинг: 0 / 0
08.09.2015, 02:10
    #39045395
НикоДимиден
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HttpURLConnection + POST
ivanraНикоДимиденА что этот класс делает BasicNameValuePair? И где можно узнавать подобную информацию что бы было нормально описано с примерами как справочник по MQL4/MQL5?
BasicNameValuePair тут совсем не обязателен. Можно, например, обойтись таблицей
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Map<String,String> params = new HashMap<String,String>();
params.put("firstParam", paramValue1);
params.put("secondParam", paramValue2);
params.put("thirdParam", paramValue3);
// и точно так же
for (Map.Entry<String, String> entry: params.entrySet()) {
	builder
	.append(builder.length()==0?"":"&")
	.append(URLEncoder.encode(entry.getKey(),"utf-8"))
	.append("=")
	.append(URLEncoder.encode(entry.getValue(),"utf-8"));
}



ТОчно! Нам же главное перекодировать URLEncoder.encode(entry.getKey(),"utf-8") в шеснадцатеричную систему и вставить амперсанд вместо знака равно в соответствии с application/x-www-form-urlencoded. Хорошо! Спасибо!
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / HttpURLConnection + POST / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]