Java基本网络支持

1、Java为网络支持提供了java.net包,该包下的URL和URLConnection等类提供了  以编程方式访问WEB服务  的功能;

2、URLDecoder、URLEncoder提供了  普通字符串  和  application/x-www-form-urlencoded MIME字符串  相互转换的静态方法;

3、【InetAddress】

    1.1  Java使用InetAddress代表IP地址,InetAddress有2个子类:Inet4Address、Inet6Address

    1.2  InetAddress没有提供构造器,  获取实例  使用2个静态方法:

          InetAddress getByName(String host);  根据主机获取对应的InetAddress对象;

          InetAddress getByAddresss(byte[] address);  根据原始IP地址获取对应的InetAddress对象;

          InetAddress getLocalHost();  获取本机IP地址对应的InetAddress实例;

    1.3  方法:

          String getCanonicalHostName();  获取此IP地址的全限定域名;

          String getHostAddress();  返回此InetAddress对象的IP地址字符串;

          String getHostName();  获取此IP地址的主机名;

          boolean isReachable(int time);  测试是否可到达该地址;

4、【使用URLDecoder、URLEncoder】

    1.1  URLDecoder、URLEncoder用于将  普通字符串  和  application/x-www-form-urlencoded MIME字符串  相互转换;

    1.2  application/x-www-form-urlencoded MIME字符串:

          在搜索引擎搜索包含中文的关键字时,访问的URL后面中文会变成类似乱码的东西,这就是application/x-www-form-urlencoded MIME字符串;

    1.3  【URLEncoder】

          方法:

            String encode(String s,String env);  将中文转换为application/x-www-form-urlencoded MIME字符串(s代表要转换的中文,env代表使用的编码格式);

       【URLDecoder】

          方法:

            String decode(String s,String env);  将application/x-www-form-urlencoded MIME字符串转换为中文(s代表要转换的字符串,env代表使用的编码格式);

package com.an.net;

import java.net.URL;
import java.net.URLConnection;
import java.net.URLDecoder;
import java.net.URLEncoder;

public class URLTest {

    public static void main(String[] args)throws Exception{
        String encodeString=URLEncoder.encode("你好","UTF-8");
        //encodeString=%E4%BD%A0%E5%A5%BD
        System.out.println(encodeString);

        String decode=URLDecoder.decode(encodeString,"UTF-8");
        //decode=你好
        System.out.println(decode);

        URL url=new URL("https://baike.baidu.com/item/%E4%BD%A0%E5%A5%BD/32416?fr=aladdin");
        String file=url.getFile();
        //file=/item/%E4%BD%A0%E5%A5%BD/32416?fr=aladdin
        System.out.println(file);
        String host=url.getHost();
        //host=baike.baidu.com
        System.out.println(host);
        String path=url.getPath();
        //path=/item/%E4%BD%A0%E5%A5%BD/32416
        System.out.println(path);
        int port=url.getPort();
        System.out.println(port);
        String protocol=url.getProtocol();
        //protocol=https
        System.out.println(protocol);
        String query=url.getQuery();
        //query=fr=aladdin
        System.out.println(query);
        URLConnection urlConnection =url.openConnection();
        urlConnection.getOutputStream();
    }
}

5、【使用URL、URLConnection】

    1.1  【URL】

          URL对象  代表统一资源定位器,是指向互联网资源的指针;

          URL由 协议名://主机:端口/资源  组成;

          方法:

            String getFile();  获取此URL的资源名;

            String getHost();  获取此URL的主机名;

            String getPath();  获取此URL的路径部分;

            int getProt();  获取此URL的端口;

            String getProtocol();  获取此URL的协议名;

            String getQuery();  获取此URL的查询字符串部分;

            URLConnection openConnection();  

                返回一个URLConnection对象,表示到应用程序和URL之间的通信链接;

                程序可通过该URLConnection对象向URL发送请求,读取URL的资源;

            InputStream openStream();  打开与此URL的连接,并返回一个用于读取该URL资源的InputStream;

    1.2  【创建一个和URL的连接,并发送请求、读取此URL所引用的资源】

        1.1.1  调用URL的openConnection方法获取URLConnection对象;

        1.1.2  设置URLConnection的参数和普通属性;

        1.1.3  GET请求,直接URLConnection实例调用connect方法即可创建连接;

            POST请求,获取URLConnection实例对应的输出流来发送请求参数;

        1.1.4  读取远程资源等


package com.an.net;

import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.URL;import java.net.URLConnection;

/** * get请求 */public class GetRequestTest {

public static void main(String[] args){        BufferedReader bufferedReader=null;        try {            URL url=new URL("https://baike.baidu.com/item/%E4%BD%A0%E5%A5%BD/32416?fr=aladdin");            URLConnection urlConnection =url.openConnection();            urlConnection.setRequestProperty("accept","*/*");            urlConnection.setRequestProperty("connection","Keep-Alive");            urlConnection.setRequestProperty("user-agent","Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36");            urlConnection.connect();            bufferedReader=new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));            String s=null;            while ((s=bufferedReader.readLine())!=null){                System.out.println(s.trim());            }        }catch (Exception e){            e.printStackTrace();        }finally {            try {                if (bufferedReader!=null){                    bufferedReader.close();                }            }catch (IOException e){                e.printStackTrace();            }

}    }}
package com.an.net;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.URL;
import java.net.URLConnection;

/**
 * post请求
 */
public class PostRequestTest {

    private static String params="fr=aladdin";

    public static void main(String[] args){
        PrintWriter printWriter=null;
        BufferedReader bufferedReader=null;
        try {
            URL url=new URL("https://baike.baidu.com/item/%E4%BD%A0%E5%A5%BD/32416");
            URLConnection urlConnection =url.openConnection();
            urlConnection.setRequestProperty("accept","*/*");
            urlConnection.setRequestProperty("connection","Keep-Alive");
            urlConnection.setRequestProperty("user-agent","Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36");
            //POST请求必须设置
            urlConnection.setDoOutput(true);
            urlConnection.setDoInput(true);
            //获取urlConnection对应的输出流
            printWriter=new PrintWriter(urlConnection.getOutputStream());
            //发送POST请求参数
            printWriter.write(params);
            printWriter.flush();
            bufferedReader=new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
            String s=null;
            while ((s=bufferedReader.readLine())!=null){
                System.out.println(s.trim());
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            try {
                if (bufferedReader!=null){
                    bufferedReader.close();
                }
                if (printWriter!=null){
                    printWriter.close();
                }
            }catch (Exception e){
                e.printStackTrace();
            }
        }

    }
}

            

 

          

原文地址:https://www.cnblogs.com/anpeiyong/p/10291169.html

时间: 2024-10-15 09:49:30

Java基本网络支持的相关文章

JAVA的网络编程【转】

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

JAVA的网络编程

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

Java之网络爬虫WebCollector2.1.2+selenium2.44+phantomjs2.1.1

Java之网络爬虫WebCollector2.1.2+selenium2.44+phantomjs2.1.1 一.简介 版本匹配: WebCollector2.12 + selenium2.44.0 + phantomjs 2.1.1 动态网页爬取: WebCollector + selenium + phantomjs 说明:这里的动态网页指几种可能:1)需要用户交互,如常见的登录操作:2)网页通过JS / AJAX动态生成,如一个html里有<div id="test">

Java 8 语言功能支持更新(转载)

几天前,我们发布了 Android Studio 2.4 Preview 6.现在,在 javac/dx 编译路径中,Java 8 语言功能将得到 Android 构建系统的支持.Android Studio 的 Gradle 插件现在对 Java 8 类文件进行"脱糖"处理,仅保留与 Java 7 兼容的类文件,因此,您可以使用 Java 8 的 lambda.方法引用及其他功能. 对于尝试 Jack 编译器的开发者而言,我们现在支持相同的 Java 8 语言功能集,但构建速度更快.

Java IO: 网络

原文链接 作者: Jakob Jenkov 译者: 李璟([email protected]) 校对:方腾飞 Java中网络的内容或多或少的超出了Java IO的范畴.关于Java网络更多的是在我的Java网络教程中探讨.但是既然网络是一个常见的数据来源以及数据流目的地,并且因为你使用Java IO的API通过网络连接进行通信,所以本文将简要的涉及网络应用. 当两个进程之间建立了网络连接之后,他们通信的方式如同操作文件一样:利用InputStream读取数据,利用OutputStream写入数据

java测试网络连接是否成功并设置超时时间

/** * 获取RMI接口状态 * * @return "0":服务正常,"1": 连接报错,"2":连接超时 */ @Override public String getRMIJkzt() { final ExecutorService es = Executors.newFixedThreadPool(1); Callable<String> callable = new Callable<String>() {//使

Java - TCP网络编程

Java - TCP网络编程 Server 逻辑思路: 创建ServerSocket(port),然后服务器的socket就启动了 循环中调用accept(),此方法会堵塞程序,直到发现用户请求,返回用户的socket 利用多线程对用户socket进行IO操作 注意:对Scoket/File进行创建.关闭,都需要放try catch中,检测 IOException,所以将网络IO部分整体放入try catch中即可. 1. 字符串操作 输出:PrintWriter out=new PrintWr

java io 网络编程 高性能NIO

很久没写了,一是觉得这后台不怎么方便,二是 写的时候突然觉得没兴趣了. 还好,今天突然想记一下,那就随便写吧.  1.一开始还是放几个连接.  什么是 同步,异步,阻塞,非阻塞 : http://blog.csdn.net/historyasamirror/article/details/5778378        从Jetty.Tomcat和Mina中提炼NIO构架网络服务器的经典模式:http://blog.csdn.net/cutesource/article/details/61920

Eclipse对于多个Java项目的支持并不友好!

本文吐槽! 假设我们创建两个Java项目,一个叫StatsReader,把数据从网上下载到本地数据库里:一个叫StatsViewer,把数据从数据库里拿出来呈现给用户.这两个项目都要用同一个外部类库mysql-connector-java-5.0.8-bin.jar. Eclipse可以创建一个工作集,内含多个Java项目,但工作集只是一个概念,与项目的实际存储位置无关.但是我们可以把两个项目放在同一个目录里,比如D:\Source Code\NBA\StatsReader和D:\Source