java中发送http请求

来源:互联网 发布:php学生成绩管理系统 编辑:程序博客网 时间:2024/05/18 15:05

HTTP请求粗分为两种,一种是GET请求,一种是POST请求。使用Java发送这两种请求的Source Code大同小异,只是一些参数设置的不同。步骤如下:

  1. 通过统一资源定位器(java.net.URL)获取连接器(java.net.URLConnection)
  2. 设置请求的参数
  3. 发送请求
  4. 以输入流的形式获取返回内容
  5. 关闭输入流

简单的Get请求示例如下:

  1. package com.nicchagil.httprequestdemo;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.URL;import java.net.URLConnection;public class HttpGetRequest {    /**     *利用get发送http请求     * Main     * @param args     * @throws Exception      */    public static void main(String[] args) throws Exception {        System.out.println(doGet());    }        /**     * Get Request     * @return     * @throws Exception     */    public static String doGet() throws Exception {        URL localURL = new URL("http://localhost:8080/OneHttpServer/");        URLConnection connection = localURL.openConnection();        HttpURLConnection httpURLConnection = (HttpURLConnection)connection;                httpURLConnection.setRequestProperty("Accept-Charset", "utf-8");        httpURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");                InputStream inputStream = null;        InputStreamReader inputStreamReader = null;        BufferedReader reader = null;        StringBuffer resultBuffer = new StringBuffer();        String tempLine = null;                if (httpURLConnection.getResponseCode() >= 300) {            throw new Exception("HTTP Request is not success, Response code is " + httpURLConnection.getResponseCode());        }                try {            inputStream = httpURLConnection.getInputStream();            inputStreamReader = new InputStreamReader(inputStream);            reader = new BufferedReader(inputStreamReader);                        while ((tempLine = reader.readLine()) != null) {                resultBuffer.append(tempLine);            }                    } finally {                        if (reader != null) {                reader.close();            }                        if (inputStreamReader != null) {                inputStreamReader.close();            }                        if (inputStream != null) {                inputStream.close();            }                    }                return resultBuffer.toString();    }    }
    简单的Post请求示例如下:
  2. package com.nicchagil.httprequestdemo;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.OutputStreamWriter;import java.net.HttpURLConnection;import java.net.URL;import java.net.URLConnection;public class HttpPostRequest {    /**     * Main     * @param args     * @throws Exception      */    public static void main(String[] args) throws Exception {        System.out.println(doPost());    }        /**     * Post Request     * @return     * @throws Exception     */    public static String doPost() throws Exception {        String parameterData = "username=nickhuang&blog=http://www.cnblogs.com/nick-huang/";                URL localURL = new URL("http://localhost:8080/OneHttpServer/");        URLConnection connection = localURL.openConnection();        HttpURLConnection httpURLConnection = (HttpURLConnection)connection;                httpURLConnection.setDoOutput(true);        httpURLConnection.setRequestMethod("POST");        httpURLConnection.setRequestProperty("Accept-Charset", "utf-8");        httpURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");        httpURLConnection.setRequestProperty("Content-Length", String.valueOf(parameterData.length()));                OutputStream outputStream = null;        OutputStreamWriter outputStreamWriter = null;        InputStream inputStream = null;        InputStreamReader inputStreamReader = null;        BufferedReader reader = null;        StringBuffer resultBuffer = new StringBuffer();        String tempLine = null;                try {            outputStream = httpURLConnection.getOutputStream();            outputStreamWriter = new OutputStreamWriter(outputStream);                        outputStreamWriter.write(parameterData.toString());            outputStreamWriter.flush();                        if (httpURLConnection.getResponseCode() >= 300) {                throw new Exception("HTTP Request is not success, Response code is " + httpURLConnection.getResponseCode());            }                        inputStream = httpURLConnection.getInputStream();            inputStreamReader = new InputStreamReader(inputStream);            reader = new BufferedReader(inputStreamReader);                        while ((tempLine = reader.readLine()) != null) {                resultBuffer.append(tempLine);            }                    } finally {                        if (outputStreamWriter != null) {                outputStreamWriter.close();            }                        if (outputStream != null) {                outputStream.close();            }                        if (reader != null) {                reader.close();            }                        if (inputStreamReader != null) {                inputStreamReader.close();            }                        if (inputStream != null) {                inputStream.close();            }                    }        return resultBuffer.toString();    }}

    如何通过Java发送HTTP请求,通俗点讲,如何通过Java(模拟浏览器)发送HTTP请求。

    Java有原生的API可用于发送HTTP请求,即java.net.URL、java.net.URLConnection,这些API很好用、很常用,但不够简便;

    所以,也流行有许多Java HTTP请求的framework,如,Apache的HttpClient。



0 0
原创粉丝点击