當前位置:才華齋>計算機>java語言>

java如何利用java.net.URLConnection傳送HTTP請求

java語言 閱讀(2.17W)

如何通過Java傳送HTTP請求,通俗點講,如何通過Java(模擬瀏覽器)傳送HTTP請求。下面是由本站小編為大家整理的java如何利用onnection傳送HTTP請求,喜歡的可以收藏一下!瞭解更多詳情資訊,請關注應屆畢業生考試網!

java如何利用java.net.URLConnection傳送HTTP請求

  運用原生Java Api傳送簡單的Get請求、Post請求步驟

1.通過統一資源定位器()獲取聯結器(onnection)

2.設定請求的引數

3.傳送請求

4.以輸入流的.形式獲取返回內容

5.關閉輸入流

傳送請求與接收響應流類 HttpRequestor

package ;

import eredReader;

import ception;

import tStream;

import tStreamReader;

import utStream;

import utStreamWriter;

import URLConnection;

import SocketAddress;

import y;

import ;

import onnection;

import ator;

import ;

public class HttpRequestor {

private String charset = "utf-8";

private Integer connectTimeout = null;

private Integer socketTimeout = null;

private String proxyHost = null;

private Integer proxyPort = null;

/**

* Do GET request

* @param url

* @return

* @throws Exception

* @throws IOException

*/

public String doGet(String url) throws Exception {URL localURL = new URL(url);

URLConnection connection = Connection(localURL);HttpURLConnection httpURLConnection = (HttpURLConnection)connection;equestProperty("Accept-Charset", charset);equestProperty("Content-Type", "application/x-www-form-urlencoded");InputStream inputStream = null;

InputStreamReader inputStreamReader = null;BufferedReader reader = null;

StringBuffer resultBuffer = new StringBuffer();String tempLine = null;

//響應失敗

if (esponseCode() >= 300) {throw new Exception("HTTP Request is not success, Response code is " + esponseCode());}

try {

inputStream = nputStream();inputStreamReader = new InputStreamReader(inputStream);reader = new BufferedReader(inputStreamReader);while ((tempLine = Line()) != null) {nd(tempLine);

}

} finally {

if (reader != null) {

e();

}

if (inputStreamReader != null) {

e();

}

if (inputStream != null) {

e();

}

}

return ring();

}

/**

* Do POST request

* @param url

* @param parameterMap

* @return

* @throws Exception

*/

public String doPost(String url, Map parameterMap) throws Exception {/* Translate parameter map to parameter date string */StringBuffer parameterBuffer = new StringBuffer();if (parameterMap != null) {

Iterator iterator = et()ator();String key = null;

String value = null;

while (ext()) {

key = (String)();

if ((key) != null) {

value = (String)(key);

} else {

value = "";

}

nd(key)nd("=")nd(value);if (ext()) {

nd("&");

}

}

}

tln("POST parameter : " + ring());URL localURL = new URL(url);

URLConnection connection = Connection(localURL);HttpURLConnection httpURLConnection = (HttpURLConnection)connection;oOutput(true);

equestMethod("POST");equestProperty("Accept-Charset", charset);equestProperty("Content-Type", "application/x-www-form-urlencoded");equestProperty("Content-Length", eOf(th()));OutputStream outputStream = null;

OutputStreamWriter outputStreamWriter = null;InputStream inputStream = null;

InputStreamReader inputStreamReader = null;BufferedReader reader = null;

StringBuffer resultBuffer = new StringBuffer();String tempLine = null;

try {

outputStream = utputStream();outputStreamWriter = new OutputStreamWriter(outputStream);e(ring());h();

//響應失敗

if (esponseCode() >= 300) {throw new Exception("HTTP Request is not success, Response code is " + esponseCode());}

//接收響應流

inputStream = nputStream();inputStreamReader = new InputStreamReader(inputStream);reader = new BufferedReader(inputStreamReader);while ((tempLine = Line()) != null) {nd(tempLine);

}

} finally {

if (outputStreamWriter != null) {

e();

}

if (outputStream != null) {

e();

}

if (reader != null) {

e();

}

if (inputStreamReader != null) {

e();

}

if (inputStream != null) {

e();

}

}

return ring();

}

private URLConnection openConnection(URL localURL) throws IOException {URLConnection connection;

if (proxyHost != null && proxyPort != null) {Proxy proxy = new Proxy(, new InetSocketAddress(proxyHost, proxyPort));connection = Connection(proxy);} else {

connection = Connection();

}

return connection;

}

/**

* Render request according setting

* @param request

*/

private void renderRequest(URLConnection connection) {if (connectTimeout != null) {

onnectTimeout(connectTimeout);}

if (socketTimeout != null) {

eadTimeout(socketTimeout);}

}

/*

* Getter & Setter

*/

public Integer getConnectTimeout() {

return connectTimeout;

}

public void setConnectTimeout(Integer connectTimeout) {ectTimeout = connectTimeout;

}

public Integer getSocketTimeout() {

return socketTimeout;

}

public void setSocketTimeout(Integer socketTimeout) {etTimeout = socketTimeout;

}

public String getProxyHost() {

return proxyHost;

}

public void setProxyHost(String proxyHost) {yHost = proxyHost;

}

public Integer getProxyPort() {

return proxyPort;

}

public void setProxyPort(Integer proxyPort) {yPort = proxyPort;

}

public String getCharset() {

return charset;

}

public void setCharset(String charset) {

set = charset;

}

}

  為測試方便,新建一個專案,並新建一個Servlet,接收post請求並對HttpRequestor請求響應,發出響應流:此處使用了

註解: @WebServlet("/LoginServlet") ,也可以在配置Servletpackage nServlet;

import ception;

import letException;

import ervlet;import Servlet;

import ServletRequest;import ServletResponse;/**

* Servlet implementation class LoginServlet*/

@WebServlet("/LoginServlet")

public class LoginServlet extends HttpServlet {private static final long serialVersionUID = 1L;/**

* @see HttpServlet#HttpServlet()

*/

public LoginServlet() {

super();

// TODO Auto-generated constructor stub

}

/**

* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stub

tln("111");

}

/**

* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stub

String username = arameter("username");String blog = arameter("blog");tln(username);

tln(blog);

ontentType("text/plain; charset=UTF-8");haracterEncoding("UTF-8");

//響應流

riter()e("It is ok!");

}

}

測試類

package ;

import Map;

import ;

public class Test {

public static void main(String[] args) {

/* Post Request */

Map dataMap = new HashMap();

("username", "Nick Huang");

("blog", "IT");

try {

tln(new HttpRequestor()st("http://localhost:8081/TestProgect2/LoginServlet", dataMap));//tln(new HttpRequestor()t("http://localhost:8081/TestProgect2/LoginServlet"));} catch (Exception e) {

// TODO Auto-generated catch block

tStackTrace();

}

/* Get Request */

}

}

1.接收post請求類LoginServlet,控制檯測試結果Requestor接收LoginServlet返回的流

OK,完成

對於接收TestProgect2專案中類返回的流,在真實環境中可能是非同步接收返回的流的,當一臺機器A向另外一臺機器B傳送請求,B接收到A的資訊,將資訊處理後,需要將處理結果返回即響應返回給A,A會接收到B返回的資訊可以另外建一個Servlet類來專門非同步接收返回的資訊package ;

import eredReader;

import ception;

import tStream;

import tStreamReader;

import letException;

import ervlet;import Servlet;

import ServletRequest;import ServletResponse;/**

* Servlet implementation class HttpListenerServlet*/

@WebServlet("/HttpListenerServlet")

public class HttpListenerServlet extends HttpServlet {private static final long serialVersionUID = 1L;/**

* @see HttpServlet#HttpServlet()

*/

public HttpListenerServlet() {

super();

// TODO Auto-generated constructor stub

}

/**

* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stub

}

/**

* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stub

InputStream inputStream = null;

inputStream = nputStream();

InputStreamReader inputStreamReader = new InputStreamReader(inputStream);BufferedReader reader = new BufferedReader(inputStreamReader);String tempLine = null;

StringBuffer resultBuffer=new StringBuffer();while ((tempLine = Line()) != null) {nd(tempLine);

}

tln(ring());}

}