java模拟http的Get/Post请求,并设置ip与port代理的方法

发布时间 - 2026-01-10 23:08:07    点击率:

本文涉及3个基本点:

1、因为很多公司的内网都设有代理,浏览器通过ip与port上网,而java代码模拟http get方式同样需要外网代理;

2、Java实现http的Get/Post请求代码;

3、主要是设置HttpURLConnection请求头里面的属性

比如Cookie、User-Agent(浏览器类型)等等。

比如:http请求中添加Header

conn.setRequestProperty("Authorization", authorization);

注:我就在网上找的一段Get/Post模拟请求代码,添加了下代理的配置,整合完成的。

package com.pasier.quanzi.web.controller;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;
import java.util.Map;

public class HttpRequest {

  public static void main(String[] args) {
    // 如果不设置,只要代理IP和代理端口正确,此项不设置也可以
    System.getProperties().setProperty("http.proxyHost", "10.22.40.32");
    System.getProperties().setProperty("http.proxyPort", "8080");
    // 判断代理是否设置成功
    // 发送 GET 请求
    System.out.println(sendGet(
        "http://www.baidu.com",
        "param1=xxx&param2=yyy"));
    // 发送 POST 请求
  }

  /**
   * 向指定URL发送GET方法的请求
   * 
   * @param url
   *      发送请求的URL
   * @param param
   *      请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
   * @return URL 所代表远程资源的响应结果
   */
  public static String sendGet(String url, String param) {
    String result = "";
    BufferedReader in = null;
    try {
      String urlNameString = url + "?" + param;
      URL realUrl = new URL(urlNameString);
      // 打开和URL之间的连接
      URLConnection connection = realUrl.openConnection();
      // 设置通用的请求属性
      connection.setRequestProperty("accept", "*/*");
      connection.setRequestProperty("connection", "Keep-Alive");
      connection.setRequestProperty("user-agent",
          "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
      // 建立实际的连接
      connection.connect();
      // 获取所有响应头字段
      Map<String, List<String>> map = connection.getHeaderFields();
      // 遍历所有的响应头字段
      for (String key : map.keySet()) {
        System.out.println(key + "--->" + map.get(key));
      }
      // 定义 BufferedReader输入流来读取URL的响应
      in = new BufferedReader(new InputStreamReader(
          connection.getInputStream()));
      String line;
      while ((line = in.readLine()) != null) {
        result += line;
      }
    } catch (Exception e) {
      System.out.println("发送GET请求出现异常!" + e);
      e.printStackTrace();
    }
    // 使用finally块来关闭输入流
    finally {
      try {
        if (in != null) {
          in.close();
        }
      } catch (Exception e2) {
        e2.printStackTrace();
      }
    }
    return result;
  }

  /**
   * 向指定 URL 发送POST方法的请求
   * 
   * @param url
   *      发送请求的 URL
   * @param param
   *      请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
   * @return 所代表远程资源的响应结果
   */
  public static String sendPost(String url, String param) {
    PrintWriter out = null;
    BufferedReader in = null;
    String result = "";
    try {
      URL realUrl = new URL(url);
      // 打开和URL之间的连接
      URLConnection conn = realUrl.openConnection();
      // 设置通用的请求属性
      conn.setRequestProperty("accept", "*/*");
      conn.setRequestProperty("connection", "Keep-Alive");
      conn.setRequestProperty("user-agent",
          "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
      // 发送POST请求必须设置如下两行
      conn.setDoOutput(true);
      conn.setDoInput(true);
      // 获取URLConnection对象对应的输出流
      out = new PrintWriter(conn.getOutputStream());
      // 发送请求参数
      out.print(param);
      // flush输出流的缓冲
      out.flush();
      // 定义BufferedReader输入流来读取URL的响应
      in = new BufferedReader(
          new InputStreamReader(conn.getInputStream()));
      String line;
      while ((line = in.readLine()) != null) {
        result += line;
      }
    } catch (Exception e) {
      System.out.println("发送 POST 请求出现异常!" + e);
      e.printStackTrace();
    }
    // 使用finally块来关闭输出流、输入流
    finally {
      try {
        if (out != null) {
          out.close();
        }
        if (in != null) {
          in.close();
        }
      } catch (IOException ex) {
        ex.printStackTrace();
      }
    }
    return result;
  }
}

以上这篇java模拟http的Get/Post请求,并设置ip与port代理的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


# get  # post请求  # Java使用GZIP压缩导致HTTP请求返回乱码问题解决  # java 伪造http请求ip地址的方法  # Java利用Request请求如何获取IP地址对应的省份、城市详解  # Java利用Request请求获取IP地址的方法详解  # Java如何获取真实请求IP  # 给大家  # 应该是  # 我就  # 遍历  # 希望能  # 这篇  # 此项  # 小编  # 大家多多  # 两行  # 内网  # 主要是  # 在网上  # io  # util  # Map  # public  # URLConnection  # List  # BufferedReader 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 教你用AI润色文章,让你的文字表达更专业  javascript日期怎么处理_如何格式化输出  Laravel如何配置和使用缓存?(Redis代码示例)  Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率  用yum安装MySQLdb模块的步骤方法  郑州企业网站制作公司,郑州招聘网站有哪些?  Android实现代码画虚线边框背景效果  软银砸40亿美元收购DigitalBridge 强化AI资料中心布局  Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?  利用JavaScript实现拖拽改变元素大小  如何在IIS7中新建站点?详细步骤解析  JavaScript如何实现音频处理_Web Audio API如何工作?  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  在centOS 7安装mysql 5.7的详细教程  小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像  Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】  高防服务器:AI智能防御DDoS攻击与数据安全保障  网站建设要注意的标准 促进网站用户好感度!  佛山网站制作系统,佛山企业变更地址网上办理步骤?  详解jQuery中的事件  网站页面设计需要考虑到这些问题  PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑  Laravel如何使用Vite进行前端资源打包?(配置示例)  如何快速搭建自助建站会员专属系统?  iOS发送验证码倒计时应用  Laravel API资源类怎么用_Laravel API Resource数据转换  如何快速重置建站主机并恢复默认配置?  无锡营销型网站制作公司,无锡网选车牌流程?  Python3.6正式版新特性预览  Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  如何确认建站备案号应放置的具体位置?  Midjourney怎么调整光影效果_Midjourney光影调整方法【指南】  Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】  Android GridView 滑动条设置一直显示状态(推荐)  Linux网络带宽限制_tc配置实践解析【教程】  javascript中数组(Array)对象和字符串(String)对象的常用方法总结  Python结构化数据采集_字段抽取解析【教程】  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  Laravel如何实现多对多模型关联?(Eloquent教程)  Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置  零服务器AI建站解决方案:快速部署与云端平台低成本实践  Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】  微信推文制作网站有哪些,怎么做微信推文,急?  如何在IIS中配置站点IP、端口及主机头?  Android okhttputils现在进度显示实例代码  JS中页面与页面之间超链接跳转中文乱码问题的解决办法  Android Socket接口实现即时通讯实例代码  Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】