码迷,mamicode.com
首页 > 编程语言 > 详细

Java基本网络支持

时间:2019-01-19 14:28:31      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:keep   主机   oca   转换   iter   url资源   属性   urlencode   发送   

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();
            }
        }

    }
}

 

            

 

          

Java基本网络支持

标签:keep   主机   oca   转换   iter   url资源   属性   urlencode   发送   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!