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

java net.URLConnection http请求

2015-12-21 00:00 746 查看
摘要: java net.URLConnection

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

如何通过Java发送HTTP请求,通俗点讲,如何通过Java(模拟浏览器)发送HTTP请求。
Java有原生的API可用于发送HTTP请求,即java.net.URL、java.net.URLConnection,这些API很好用、很常用,但不够简便;
所以,也流行有许多Java HTTP请求的framework,如,Apache的HttpClient。
目前项目主要用到Java原生的方式,所以,这里主要介绍此方式。

运用原生Java Api发送简单的Get请求、Post请求

HTTP请求粗分为两种,一种是GET请求,一种是POST请求。(详细的请见:Hypertext Transfer Protocol -- HTTP/1.1 - Method Definitions
使用Java发送这两种请求的代码大同小异,只是一些参数设置的不同。步骤如下:

通过统一资源定位器(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请求示例如下:

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

}

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