广告
返回顶部
首页 > 资讯 > 精选 >在java项目中使用java.net.URLConnection实现一个发送HTTP请求功能
  • 525
分享到

在java项目中使用java.net.URLConnection实现一个发送HTTP请求功能

java.net.urlconnectionhttpjava 2023-05-31 14:05:58 525人浏览 八月长安
摘要

这期内容当中小编将会给大家带来有关在java项目中使用java.net.URLConnection实现一个发送Http请求功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、前言如何通过Java发送HT

这期内容当中小编将会给大家带来有关在java项目中使用java.net.URLConnection实现一个发送Http请求功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

一、前言

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

Java有原生的api可用于发送HTTP请求,即java.net.URLjava.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; } }

--结束END--

本文标题: 在java项目中使用java.net.URLConnection实现一个发送HTTP请求功能

本文链接: https://www.lsjlt.com/news/226101.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作