首页 > 编程语言 >JAVA使用HTTP代码示例

JAVA使用HTTP代码示例

时间:2023-05-26 10:06:51浏览次数:52  
标签:ip HTTP java String 示例 import new JAVA net

以下是使用Java发送HTTP请求的示例代码:


```java

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.net.HttpURLConnection;

import java.net.URL;


public class HttpExample {

public static void main(String[] args) {

try {

// 创建URL对象

URL url = new URL("Example Domain");


// 打开连接

HttpURLConnection conn = (HttpURLConnection) url.openConnection();


// 设置请求方法

conn.setRequestMethod("GET");


// 获取响应码

int responseCode = conn.getResponseCode();


// 读取响应内容

BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));

String inputLine;

StringBuffer response = new StringBuffer();

while ((inputLine = in.readLine()) != null) {

response.append(inputLine);

}

in.close();


// 输出响应内容

System.out.println(response.toString());

} catch (Exception e) {

e.printStackTrace();

}

}

}

```


这个示例代码使用了`HttpURLConnection`类来发送HTTP请求,并读取响应内容。你可以根据需要修改请求方法、请求头、请求体等参数。

import java.io.ByteArrayOutputStream;
    import java.io.InputStream;
    import java.net.Authenticator;
    import java.net.HttpURLConnection;
    import java.net.InetSocketAddress;
    import java.net.PasswordAuthentication;
    import java.net.Proxy;
    import java.net.URL;

    class ProxyAuthenticator extends Authenticator {
        private String user, password;

        public ProxyAuthenticator(String user, String password) {
            this.user     = user;
            this.password = password;
        }

        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(user, password.toCharArray());
        }
    }

    /**
     * 注意:下面代码仅仅实现HTTP请求链接,每一次请求都是无状态保留的,仅仅是这次请求是更换IP的,如果下次请求的IP地址会改变
     * 如果是多线程访问的话,只要将下面的代码嵌入到你自己的业务逻辑里面,那么每次都会用新的IP进行访问,如果担心IP有重复,
     * 自己可以维护IP的使用情况,并做校验。
     */
    public class ProxyDemo {
        public static void main(String args[]) throws Exception {
            // 要访问的目标页面
            String targetUrl = "http://ip.hahado.cn/ip";
            //String targetUrl = "http://ip.hahado.cn/switch-ip";
            //String targetUrl = "http://ip.hahado.cn/current-ip";

            // 代理服务器
            String proxyServer = "ip.hahado.cn";
            int proxyPort      = 39010;

            // 代理隧道验证信息
            String proxyUser  = "username";
            String proxyPass  = "password";

            try {
                URL url = new URL(targetUrl);

                Authenticator.setDefault(new ProxyAuthenticator(proxyUser, proxyPass));

                // 创建代理服务器地址对象
                InetSocketAddress addr = new InetSocketAddress(proxyServer, proxyPort);
                // 创建HTTP类型代理对象
                Proxy proxy = new Proxy(Proxy.Type.HTTP, addr);

                // 设置通过代理访问目标页面
                HttpURLConnection connection = (HttpURLConnection) url.openConnection(proxy);
                // 设置IP切换头
                connection.setRequestProperty("Proxy-Switch-Ip","yes");

                // 解析返回数据
                byte[] response = readStream(connection.getInputStream());

                System.out.println(new String(response));
            } catch (Exception e) {
                System.out.println(e.getLocalizedMessage());
            }
        }

        /**
         * 将输入流转换成字符串
         *
         * @param inStream
         * @return
         * @throws Exception
         */
        public static byte[] readStream(InputStream inStream) throws Exception {
            ByteArrayOutputStream outSteam = new ByteArrayOutputStream();
            byte[] buffer = new byte[1024];
            int len = -1;

            while ((len = inStream.read(buffer)) != -1) {
                outSteam.write(buffer, 0, len);
            }
            outSteam.close();
            inStream.close();

            return outSteam.toByteArray();
        }
    }

标签:ip,HTTP,java,String,示例,import,new,JAVA,net
From: https://blog.51cto.com/u_15822686/6353397

相关文章

  • 跟我一起探索 HTTP-HTTP 协议中的数据压缩
    数据压缩是提高Web站点性能的一种重要手段。对于有些文件来说,高达70%的压缩比率可以大大减低对于带宽的需求。随着时间的推移,压缩算法的效率也越来越高,同时也有新的压缩算法被发明出来,应用在客户端与服务器端。在实际应用时,web开发者不需要亲手实现压缩机制,浏览器及服务器都已......
  • javascript设计模式-享元
    这是一种优化性能代码的模式,最适合解决因创建大量类似对象而累及性能的问题。对于那些可能一连几天也不会重新加载的大型应用系统非常有用。它用于减少应用程序所需要数量,通过将对象内部划分为内在数据和外在数据两类来实现。管理享元外在数据有许多方法:1、数据库;2、组合模式(利用......
  • spring boot框架JAVA语言实现的货运系统(司机APP端+货主APP端)
    技术架构:springboot、mybatis、redis、vue、element-ui  开发语言:java、vue、uniapp开发工具:idea、vscode、hbuilder+  前端框架:vue  后端框架:springboot  数据库:mysql  移动端:uniapp混合开发+原生插件后台管理端功能:权限设置:角色设置、人员设置......
  • 什么是java序列化?什么情况下需要序列化?
    Java序列化是一种将对象转换为字节流的过程,使得对象可以在网络上传输或存储到文件系统中,同时也可以将字节流重新转换回对象的过程。通过序列化,可以将对象的状态保存下来,并在需要的时候恢复对象的状态。在Java中,通过实现Serializable接口,即可使一个类具备序列化的能力。序列化使用O......
  • 【深度剖析】JavaScript中块级作用域与函数作用域
    前言系列首发于公众号『前端进阶圈』,若不想错过更多精彩内容,请“星标”一下,敬请关注公众号最新消息。面试官必问系列:深入理解JavaScript块和函数作用域在JavaScript中,究竟是什么会生成一个新的作用域,只有函数才会生成新的作用域吗?那JavaScript其他结构能生成新的作用域吗?3.1......
  • Flask006_ HTTP 请求方法
    请求某个URL时,要获取数据,用GET方法。要删除服务器数据,用DELETE方法。要往服务器添加数据,就用POST方法。@app.route('/blog/add/post/get',methods=['POST','GET'])defblog_add_post_get():ifrequest.method=='GET':return'使用GET方......
  • IDEA中Java项目创建lib目录(添加依赖jar包代替maven依赖)
    文章目录1.右键点击项目,创建一个普通的文件夹2.取名为lib3.把项目所需的jar包复制到lib文件夹下4.然后AddasLibrary…构建项目所需的jar包5.点击ok(完成jar包的自动依赖)1.右键点击项目,创建一个普通的文件夹2.取名为lib3.把项目所需的jar包复制到lib文件夹下4.然后Add......
  • java 阶乘实现
    importjava.text.SimpleDateFormat;importjava.util.Date;publicclassImoocStudent{publicstaticvoidmain(String[]args)throwsException{for(intcounter=0;counter<=10;counter++){//这里写法:把counter,factorial()对应放到......
  • laytpl( Layui 的一款轻量 JavaScript 模板引擎)
    laytpl 是Layui的一款轻量JavaScript模板引擎,在字符解析上有着比较出色的表现。laytpl是一款颠覆性的JavaScript模板引擎文档说明一、模版语法输出一个普通字段,不转义html:{{d.field}}输出一个普通字段,并转义html:{{=d.field}}JavaScript脚本:{{#JavaScriptstate......
  • 5.26上课用java代码
    packagexu01;importjava.io.*;publicclasscaishu{publicstaticvoidmain(Stringargs[])throwsIOException{ booleanagain=false; loop1:do{ inttrueNum=(int)(Math.random()*9); System.out.println("游戏开始了"); inti=3; do{ System.out.println......