java网络URL请求编程入门

对于使用URL类请求网络服务器并接受请求进行简单处理的示例,记录下学习过程。

  • GET请求

  1. 代码示例如下

    package testHttpGet;
    
    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.MalformedURLException;
    import java.net.URL;
    import java.net.URLConnection;
    
    public class TestGet {
        public static void main(String[] args) {
            new ReadByGet().start();
        }
    
        static class ReadByGet extends Thread{
            @Override
            public void run() {
                try {
                    //根据URL地址创建一个URL对象
                    URL url = new URL("https://easy-mock.com/mock/5c2f632779696b7e93ba23d6/example/testhttpget");
    
                    //获取URL连接,open方法返回一个URLConnection类的对象
                    URLConnection conn = url.openConnection();
    
                    //从连接获取输入流,请求的输入也就是对请求的输入,即是相应,
                    InputStream in = conn.getInputStream();
                    InputStreamReader is = new InputStreamReader(in);
    
                    //将字节流转换成字符流,方便操作
                    BufferedReader br = new BufferedReader(is);
                    String line = null;
                    while((line = br.readLine())!=null) {
                        //打印相应的内容
                        System.out.println(line);
                    }
                } catch (MalformedURLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    }
    
    结果:返回一个html页面
  2. 内部类如果在静态方法里面创建对象必须是静态内部类,或者将其声明在外部。
  • POST请求

  1. 代码示例如下:

    package testHttpGet;
    
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    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.MalformedURLException;
    import java.net.URL;
    
    public class TestHttpPost {
        public static void main(String[] args) {
            new ReadByPost().start();
        }
    
        static class ReadByPost extends Thread{
            @Override
            public void run() {
                try {
                    URL url = new URL("https://easy-mock.com/mock/5c2f632779696b7e93ba23d6/example/testhttpget");
    
                    //返回一个HttpURLConnection对象,他继承自URLConnection,
                    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    
                    //设置请求头
                    conn.addRequestProperty("encoding", "utf-8");
    
                    //设置允许对请求输入和输出参数,也就是对请求加上参数
                    conn.setDoInput(true);
                    conn.setDoOutput(true);
    
                    //设置请求方式为POST
                    conn.setRequestMethod("POST");
    
                    OutputStream out = conn.getOutputStream();
                    OutputStreamWriter owt = new OutputStreamWriter(out);
                    BufferedWriter bw = new BufferedWriter(owt);
                    //对请求设置参数
                    bw.write("name=Tom&age=18");
    
                    //获取请求的响应,输入流
                    InputStream in = conn.getInputStream();
                    InputStreamReader is = new InputStreamReader(in);
                    BufferedReader br = new BufferedReader(is);
                    String line = null;
                    while((line = br.readLine()) != null) {
                        System.out.println(line);
                    }
                } catch (MalformedURLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    }
    
    注意点:设置请求参数之前必须先设置请求方式为POST,否则会抛出异常,输入流和输出流的先后顺序也不能颠倒,因为是先请求再得到响应,所以是输出流在前,为请求设置请求参数,输入流在后,就是得到的响应的具体内容!

原文地址:https://www.cnblogs.com/PCBullprogrammer/p/10258178.html

时间: 2024-10-29 07:34:27

java网络URL请求编程入门的相关文章

java.net.URL请求远程文件下载

1:浏览器请求下载 public void listStockcodeUplaod(HttpServletRequest req, HttpServletResponse res) throws Exception { String urlPath = req.getParameter("url"); String name = req.getParameter("name"); URL url = new URL(urlPath); HttpURLConnecti

Java学习笔记—第十二章 Java网络编程入门

第十二章  Java网络编程入门 Java提供的三大类网络功能: (1)URL和URLConnection:三大类中最高级的一种,通过URL网络资源表达方式,可以很容易确定网络上数据的位置.利用URL的表示和建立,Java程序可以直接读入网络上所放的数据,或把自己的数据传送到网络的另一端. (2)Socket:又称"套接字",用于描述IP地址和端口(在Internet中,网络中的每台主机都有一个唯一的IP地址,而每台主机又通过提供多个不同端口来提供多种服务).在客户/服务器网络中,当客

java网络编程入门教程

网络编程 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入网络编程的大门而放弃了对于该部分技术的学习. 在 学习网络编程以前,很多初学者可能觉得网络编程是比较复杂的系统工程,需要了解很多和网络相关的基础知识,其实这些都不是很必需的.首先来问一个问题:你 会打手机吗?很多人可能说肯定会啊,不就是按按电话号码,拨打电话嘛,很简单的事情啊!其实初学者如果入门网络编程的话也可以做到这么简单! 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据.

Java网络编程-URI和URL

前提 前面的一篇文章<Java中的Internet查询>分析完了如何通过IP地址或者主机名确定主机在因特网中的地址.任意给定主机上可能会有任意多个资源,这些资源需要有标识符方便主机之间访问对方的资源,因此这篇文章深入分析一下URL和URI. URI URI全称是Uniform Resource Identifier,也就是统一资源标识符,它是一种采用特定的语法标识一个资源的字符串表示.URI所标识的资源可能是服务器上的一个文件,也可能是一个邮件地址.图书.主机名等.简单记为:URI是标识一个资

【Java】Java网络编程菜鸟进阶:TCP和套接字入门

Java网络编程菜鸟进阶:TCP和套接字入门 JDK 提供了对 TCP(Transmission Control Protocol,传输控制协议)和 UDP(User Datagram Protocol,用户数据报协议)这两个数据传输协议的支持.本文开始探讨 TCP. TCP 基础知识 在“服务器-客户端”这种架构中,服务器和客户端各自维护一个端点,两个端点需要通过网络进行数据交换.TCP 为这种需求提供了一种可靠的流式连接,流式的意思是传出和收到的数据都是连续的字节,没有对数据量进行大小限制.

Java网络编程从入门到精通(4):DNS缓存

在通过DNS查找域名的过程中,可能会经过多台中间DNS服务器才能找到指定的域名,因此,在DNS服务器上查找域名是非常昂贵的操作.在Java中为了缓解这个问题,提供了DNS缓存.当InetAddress类第一次使用某个域名(如www.csdn.net)创建InetAddress对象后,JVM就会将这个域名和它从DNS上获得的信息(如IP地址)都保存在DNS缓存中.当下一次InetAddress类再使用这个域名时,就直接从DNS缓存里获得所需的信息,而无需再访问DNS服务器. DNS缓存在默认时将永

Hbuilder MUI里面使用java.net.URL发送网络请求,操作cookie

1. 引入所需网络请求类: var URL = plus.android.importClass("java.net.URL"); var URLConnection = plus.android.importClass("java.net.URLConnection"); var BufferedReader = plus.android.importClass("java.io.BufferedReader"); var InputStrea

Java网络编程(URL与URLConnection)

//URL package org.urldemo; import java.io.InputStream; import java.net.URL; import java.util.Scanner; public class URLDemo { public static void main(String[] args) throws Exception{ URL url = new URL("http","www.hut.edu.cn",80,"/c

Java网络编程和NIO详解2:JAVA NIO一步步构建IO多路复用的请求模型

Java网络编程与NIO详解2:JAVA NIO一步步构建IO多路复用的请求模型 知识点 nio 下 I/O 阻塞与非阻塞实现 SocketChannel 介绍 I/O 多路复用的原理 事件选择器与 SocketChannel 的关系 事件监听类型 字节缓冲 ByteBuffer 数据结构 场景 接着上一篇中的站点访问问题,如果我们需要并发访问10个不同的网站,我们该如何处理? 在上一篇中,我们使用了java.net.socket类来实现了这样的需求,以一线程处理一连接的方式,并配以线程池的控制