当前位置: 首页 » 产品 » 商务广告 » 正文

java如何利用java.net.URLConnection发送HTTP请求

放大字体  缩小字体 发布日期: 2025-02-01 00:47   来源:http://www.baidu.com/  作者:无忧资讯  浏览次数:14
核心提示:如何通过Java发送HTTP请求,通俗点讲,如何通过Java(模拟浏览器)发送HTTP请求。Java有原生的API可用于发送HTTP请求,即java.ne

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

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

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

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

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

1.通过统一资源定位器(java.net.URL)获取连接器(java.net.URLConnection)

2.设置请求的参数

3.发送请求

4.以输入流的形式获取返回内容

5.关闭输入流

三、发送请求与接收响应流类 HttpRequestor

package me.http; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.net.HttpURLConnection; import java.net.InetSocketAddress; import java.net.Proxy; import java.net.URL; import java.net.URLConnection; import java.util.Iterator; import java.util.Map; public class HttpRequestor { private String charset="utf-8"; private Integer connectTimeout=null; private Integer socketTimeout=null; private String proxyHost=null; private Integer proxyPort=null; public String doGet(String url) throws Exception { URL localURL=new URL(url); URLConnection connection=this.openConnection(localURL); HttpURLConnection httpURLConnection=(HttpURLConnection)connection; httpURLConnection.setRequestProperty("Accept-Charset", charset); 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(); } public String doPost(String url, Map parameterMap) throws Exception { StringBuffer parameterBuffer=new StringBuffer(); if (parameterMap !=null) { Iterator iterator=parameterMap.keySet().iterator(); String key=null; String value=null; while (iterator.hasNext()) { key=(String)iterator.next(); if (parameterMap.get(key) !=null) { value=(String)parameterMap.get(key); } else { value=""; } parameterBuffer.append(key).append("=").append(value); if (iterator.hasNext()) { parameterBuffer.append("&"); } } } System.out.println("POST parameter : " + parameterBuffer.toString()); URL localURL=new URL(url); URLConnection connection=this.openConnection(localURL); HttpURLConnection httpURLConnection=(HttpURLConnection)connection; httpURLConnection.setDoOutput(true); httpURLConnection.setRequestMethod("POST"); httpURLConnection.setRequestProperty("Accept-Charset", charset); httpURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); httpURLConnection.setRequestProperty("Content-Length", String.valueOf(parameterBuffer.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(parameterBuffer.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(); } private URLConnection openConnection(URL localURL) throws IOException { URLConnection connection; if (proxyHost !=null && proxyPort !=null) { Proxy proxy=new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyHost, proxyPort)); connection=localURL.openConnection(proxy); } else { connection=localURL.openConnection(); } return connection; } private void renderRequest(URLConnection connection) { if (connectTimeout !=null) { connection.setConnectTimeout(connectTimeout); } if (socketTimeout !=null) { connection.setReadTimeout(socketTimeout); } } public Integer getConnectTimeout() { return connectTimeout; } public void setConnectTimeout(Integer connectTimeout) { this.connectTimeout=connectTimeout; } public Integer getSocketTimeout() { return socketTimeout; } public void setSocketTimeout(Integer socketTimeout) { this.socketTimeout=socketTimeout; } public String getProxyHost() { return proxyHost; } public void setProxyHost(String proxyHost) { this.proxyHost=proxyHost; } public Integer getProxyPort() { return proxyPort; } public void setProxyPort(Integer proxyPort) { this.proxyPort=proxyPort; } public String getCharset() { return charset; } public void setCharset(String charset) { this.charset=charset; } }

四、为测试方便,新建一个项目,并新建一个Servlet,接收post请求并对HttpRequestor请求响应,发出响应流

java如何利用java.net.URLConnection发送HTTP请求 三联

LoginServlet.java代码:此处使用了

注解: @WebServlet("/LoginServlet") ,也可以在web.xml配置Servlet

内容来源:https://www.16jixie.com/news/show-3549.html
 
 
[ 产品搜索 ]  [ 加入收藏 ]  [ 告诉好友 ]  [ 打印本文 ]  [ 违规举报 ]  [ 关闭窗口 ]

 

 
推荐图文
推荐产品
点击排行
    行业协会  备案信息  可信网站