您的位置:首页 > 理论基础 > 计算机网络

通过java.net.URLConnection发送HTTP请求的方法

2017-07-31 17:26 645 查看
http://www.cnblogs.com/nick-huang/p/3859353.html

一,关于java 原生http请求的简介

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

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

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

目前项目主要用到Java原生的方式,所以,这里主要介绍此方式。

二 、HTTP请求粗分为两种,一种是GET请求,一种是POST请求

步骤如下:
通过统一资源定位器(java.net.URL)获取连接器(java.net.URLConnection)
设置请求的参数
发送请求
以输入流的形式获取返回内容
关闭输入流
三、简单的get请求示例

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 {

    /**

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

    }

    

}

HttpGetRequest

四,简单的post请求示例

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

    }

}

HttpPostRequest
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: