Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Работа с сетью > HttpURLConnection + POST


Автор: semiromid 6.9.2015, 16:33
Здравствуйте. Подскажите пожалуйста, как правильно передать POST запрос с параметрами. То есть заголовки не нужны а только параметры ( тело запроса по стандартной кодировке которая по умолчанию в  HTML application/x-www-form-urlencoded )

Вот код но как сюда вставить запрос?

Код
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();
            }
        }
    }



Говорят что при помощи :
Код
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("firstParam", paramValue1));
params.add(new BasicNameValuePair("secondParam", paramValue2));
params.add(new BasicNameValuePair("thirdParam", paramValue3));



Код
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();
}


2.А обязательно это делать с использование этого класса - BasicNameValuePair, и если нет как можно сделать по другому ? 
3.Этот класс из библиотеки Апач , просто даже не понятно что и где нужно качать что бы можно было использовать этот класс ?
4.А что этот класс делает BasicNameValuePair?
5.И где можно узнавать подобную информацию что бы было нормально описано с примерами как справочник по MQL4/MQL5?

Автор: Samotnik 6.9.2015, 19:22
Код


    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);

            String urlParameters = "param1=ololo&param2=trololo"; //создаем обычную строку с параметрами

            DataOutputStream wr = new DataOutputStream(c.getOutputStream());
            wr.writeBytes(urlParameters);  //пишем параметры в поток
            wr.flush();
            wr.close();


            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();
            }
        }
    }


Добавлено через 53 секунды
Не нужен тебе никакой BasicNameValuePair  smile 

Автор: semiromid 6.9.2015, 20:23
Цитата(Samotnik @  6.9.2015,  19:22 Найти цитируемый пост)
String urlParameters = "param1=ololo&param2=trololo"; //создаем обычную строку с параметрами
            DataOutputStream wr = new DataOutputStream(c.getOutputStream());
            wr.writeBytes(urlParameters);  //пишем параметры в поток
            wr.flush();
            wr.close();

Ооо... Вы настоящий маг и волшебник!) Я еще в 4 форму написал кроме этого, так внятно и ясно никто не ответил. Спасибо!) 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)