Post parameters to server with Java

來源:互聯網
上載者:User

Sumary:

Use:

data = URLEncoder.encode("para1", "UTF-8") + "=" + URLEncoder.encode("value1", "UTF-8");

Don’t use:

data = URLEncoder.encode("para1=value1", "UTF-8");

 

Posting data to a server should be very easy. But for some newbies, it could make troubles. I’m a newbie.

Normally after googling, you should find something like this:

From:http://www.javadb.com/sending-a-post-request-with-parameters-from-a-java-class

        //Build parameter string        String data = "width=50&height=100";        try {                        // Send the request            URL url = new URL("http://www.somesite.com");            URLConnection conn = url.openConnection();            conn.setDoOutput(true);            OutputStreamWriter writer = new OutputStreamWriter(conn.getOutputStream());                        //write parameters            writer.write(data);            writer.flush();                        // Get the response            StringBuffer answer = new StringBuffer();            BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));            String line;            while ((line = reader.readLine()) != null) {                answer.append(line);            }            writer.close();            reader.close();                        //Output the response            System.out.println(answer.toString());                    } catch (MalformedURLException ex) {            ex.printStackTrace();        } catch (IOException ex) {            ex.printStackTrace();        }
 

If your parameters and values are as simple as this, everything is OK. But if not, you may need a URLEncoder! And that’s what makes me in trouble.

If you write your code as

            data = URLEncoder.encode(data, "UTF-8");             //write parameters            writer.write(data);            writer.flush();

You are in trouble now. All “width=50&height=100” will be expained as ONE parameter name.

And think a little. Why we need an Encoder? We use an encoder to convert a special charactor into something like %xx, if your code is like above, “=”will be converted. And that now we supposed. So it should be like this:

data = URLEncoder.encode("para1", "UTF-8") + "=" + URLEncoder.encode("value1", "UTF-8");data += "&" + URLEncoder.encode("para2", "UTF-8") + "=" + URLEncoder.encode("value2", "UTF-8");

That’s it!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.