针对网络通讯的不一样层次,Java提供了不一样的API,其提供的网络功能有四大类:InetAddress:用于标识网络上的硬件资源,主要是IP地址;URL:统一资源定位符,经过URL能够直接读取或写入网络上的数据;Sockets:使用TCP协议实现的网络通讯Socket相关的类;Datagram:使用UDP协议,将数据保存在用户数据报中,经过网络进行通讯。编程
URL处理,给定一个URL,分析URL的结构,经过URL获取网络数据浏览器
1.URL类,使用一个字符串url初始化,getXXX()返回域名、端口、参数等;openConnection()返回一个URLConnection对象tomcat
2.URLConnection类:表明与目标的链接对象,getInputStream()返回InputStream对象,其中包含从网络主机获取到的数据服务器
3.InetAddress类:表明IP地址,静态方法getLocalHost(),getByName()获取IP网络
4.Socket编程多线程
5.Java.net.Socket类:表明一个套接字socket
6.Java.net.ServerSocket:服务器端套接字监听类post
7.Socket是TCP/IP协议的编程接口,网络上具备惟一标识的IP地址和端口号组合在一块儿构成惟一的套接字编码
8.使用socket和多线程实现一个静态网页服务器,功能有浏览静态网页,上传下载文件。Cookie保存。
须要解决的问题:HTTP协议的get和post方法如何分别处理。HTTP协议有哪些选项。HTTP协议的状态码。服务器配置文件XML文件的解析,saxurl
9.Tomcat7源码解读:http://blog.csdn.net/c929833623lvcha/article/details/44677569
10.阅读tomcat源码须要哪些知识:socket、如何在TCP上实现HTTP、servlet规范、类加载器、XML解析
Java中使用URL类请求网络接口
URL不具有浏览器的urlencode功能,因此请求的路径中不能使用特殊符号
例如:请求路径中有日期参数2017-12-04 12:00
若是直接将参数添加到请求路径中,可能会致使请求错误
缘由是URL类中的请求方法不会对日期中的空格转换成 %20
解决问题的办法有
使用URLEncode类转换,或者手动替换请求路径中的特殊字符,例如将空格替换为%20
URLEncode使用建议:
先拼接完整URL,而后再对整个URL进行编码;
也能够对单个的参数值进行编码,
可是不要将 例如:http://192.168.3.154:11088/demo.htm?abc=123中问号后面的部分进行单独编码,而后再与前面部分拼接,这样得不到正确的URL,由于?和&都会被看成特殊字符进行处理。
使用request.getParameter()方法获取参数时,若是请求中没有对应的参数,这获得的结果是null而非空字符串。