Java中基于HTTP协议网络编程

java中为我们的网络支持提供了java.net包,能够使我们以编程的方式来訪问Web服务功能,这篇博客,就跟大家分享一下。Java中的网络编程的知识。主要是学习下该java.net包下的API。

URI——>URL

URI:表示的是统一的资源标识,它是以某种统一的方式标识资源的简单字符串。

这样的字符串以scheme开头。

URL:表示统一的资源定位器的任务,URL是一种URI。

URN:一般不能为资源提供持久不变的名称。这是统一的资源命名的任务。URN也是一种URI,但它是全球唯一的、持久不变的。即使资源不再存在或不再使用。

URL类

URL类代表一个统一资源定位符,资源能够是简单的文件夹。也能够是复杂的对象,比如对数据库或搜索引擎的查询。

URL类为我们提供了不同的构造方法

1.依据地址构造URL

public URL(String spec);——————————————URL url=new URL("www.baidu.com")

2.依据协议、主机名、端口和文件创造

public URL(String protocol,String host,int port,String file)

 URL封装对象信息

URL对象封装了一些对象的信息,比方URL对象的端口号、头内容、主机名、协议名称等

/**
 * @FileName: URLTest.java
 * @Package:com.socket
 * @Description: TODO
 * @author: LUCKY
 * @date:2015年12月11日 上午8:48:34
 * @version V1.0
 */
package com.socket;

import java.awt.image.ImageProducer;
import java.net.URL;

/**
 * @ClassName: URLTest
 * @Description: TODO
 * @author: LUCKY
 * @date:2015年12月11日 上午8:48:34
 */
public class URLTest {
	public static void main(String[] args) {
		try {
			//依据地址创建
			URL url=new URL("http://ww2.sinaimg.cn/large/70c8c5b7gw1erdli8ka8vj21360m1ju9.jpg");
			//取得信息
			System.out.println(url.getAuthority());
			System.out.println(url.getPath());
			System.out.println(url.getPort());
			System.out.println(url.getDefaultPort());
			System.out.println(url.getFile());
			System.out.println(url.getProtocol());
			Object o=url.getContent();
			if(o instanceof ImageProducer){
				ImageProducer i=(ImageProducer)o;
				System.out.println(i);
			}

		} catch (Exception e) {
			// TODO: handle exception
		}
	}
}

URLConnection网页连接类

有了URL后。怎样来与网页进行连接呢。这时候就须要URLConnection类来为我们服务。

它代表应用程序和URL之间的通信连接。

通常创建RUL连接须要下面几个步骤。

1.通过在URL上调用openConnection()方法创建链接对象。

2.设置请求參数的一般请求属性

经常使用的属性有是否执行用户交互、能否够输入输出、是否启用缓存等

3.使用connect()方法建立到远程对象的实际连接

4.在建立到远程对象的连接后,获取訪问的字段和内容

比方获取文件的类型、文件的创建时间、文件的过期时间、文件的长度等

5.最后须要关闭连接

/**
 * @FileName: URLConnectionTest.java
 * @Package:com.socket
 * @Description: TODO
 * @author: LUCKY
 * @date:2015年12月11日 上午8:54:24
 * @version V1.0
 */
package com.socket;

import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;

import com.sun.org.apache.xerces.internal.util.URI.MalformedURIException;

/**
 * @ClassName: URLConnectionTest
 * @Description: TODO
 * @author: LUCKY
 * @date:2015年12月11日 上午8:54:24
 */
public class URLConnectionTest {

	public static void main(String[] args) throws Exception {
		try {
			//依据地址创建URL
			URL url=new URL("http://ww2.sinaimg.cn/large/70c8c5b7gw1erdli8ka8vj21360m1ju9.jpg");
			//获得urlConnecion
			URLConnection connection=url.openConnection();
			//打开连接
			connection.connect();
			//取得属性
			System.out.println(connection.getContentLength());
			System.out.println(connection.getContentType());
			System.out.println(connection.getDate());
			System.out.println(connection.getExpiration());
			System.out.println(connection.getLastModified());
			//读取网页数据
			int c;
			InputStream is=connection.getInputStream();
			BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream("copy.png"));
			while((c=is.read())!=-1){
				out.write(c);
				System.out.println((char)c);
			}
			out.flush();
			is.close();

		} catch (MalformedURIException e) {
			// TODO: handle exception
			e.printStackTrace();
		}
	}
}
时间: 2024-10-20 05:00:12

Java中基于HTTP协议网络编程的相关文章

Java中基于UDP协议的的网络编程(基础篇)

---恢复内容开始--- 一:什么是网络编程? 通俗的来说, 网络编程就是编写程序,让联网的两个或多个设备(例如计算机)之间进行数据传输.Java语言也支持网络编程,JDK提供的 java.net包提供了很多于网络编程相关的类,来支持网络编程方面的学习. 二:java网络编程所使用的协议? 有了计算机网络的基础,我们不难理解,在java中,网络编程是基于网络传输协议的. java网络编程,可以是基于TCP协议的,也可以基于UDP协议的.那么首先我们得知道tcp协议和udp两种协议的区别. 区别:

Java学习总结(十三)——基于UDP协议网络编程

一.UDP网络编程1.面向无连接的数据传输,不可靠的,但效率高(音频,视频等).2.UDP一次发送的数据不能超过64kb.3.UDP编程所需要的类(1)DatagramSocket此类表示用来发送和接收数据报包的套接字(2)DatagramPacket此类表示数据报包方法:DatagramPacket(byte[]?buf, int?length, InetAddress?address, int?port)参数表示:buf - 包数据length - 包长度address - 目的地址port

(1)网络编程的常识 (2)基于tcp协议的编程模型 (3)tcp协议和udp协议的比较 (4)基于udp协议的编程模型

1.网络编程的常识 目前主流的网络通讯软件有:微信.QQ.YY.陌陌.探探.飞信.阿里旺旺.... 在吗? 1.1 七层网络模型(熟悉) 为了保证数据传递的可靠安全等等,ISO(国际标准委员会组织)将数据的传递从逻辑上划分为以下七层: 应用层.表示层.会话层.传输层.网络层.数据链路层.物理层. 在发送数据之前要按照上述七层协议从上到下一层一层进行加包处理,再发送出去; 在接收数据之后要按照上述七层协议从下到上一层一层进行拆包处理,再解析出来: 1.2 常用的协议(熟悉) http协议 - 超文

Java网络编程和NIO详解9:基于NIO的网络编程框架Netty

Java网络编程和NIO详解9:基于NIO的网络编程框架Netty 转自https://sylvanassun.github.io/2017/11/30/2017-11-30-netty_introduction/ netty是基于NIO实现的异步事件驱动的网络编程框架,学完NIO以后,应该看看netty的实现,netty框架涉及的内容特别多,这里只介绍netty的基本使用和实现原理,更多扩展的内容将在以后推出. 本系列文章首发于我的个人博客:https://h2pl.github.io/ 欢迎

Java中的UDP协议编程

一. UDP协议定义   UDP协议的全称是用户数据报,在网络中它与TCP协议一样用于处理数据包.在OSI模型中,在第四层——传输层,处于IP协议的上一层.UDP有不提供数据报分组.组装和不能对数据包的排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的. 二. 使用UDP的原因 它不属于连接型协议,因而具有资源消耗小,处理速度快的优点,所以通常音频.视频和普通数据在传送时使用UDP较多,因为它们即使偶尔丢失一两个数据包, 也不会对接收结果产生太大影响.比如我们聊天用的ICQ和O

初解,Scala语言中基于Actor的并发编程的机制,并展示了在Spark中基于Scala语言的Actor而产生的消息驱动框架Akka的使用,

Scala深入浅出实战中级--进阶经典(第66讲:Scala并发编程实战初体验及其在Spark源码中应用解析)内容介绍和视频链接 2015-07-24 DT大数据梦工厂 从明天起,做一个勤奋的人 看视频.下视频,分享视频 DT大数据梦工厂-Scala深入浅出实战中级--进阶经典:第66讲:Scala并发编程实战初体验及其在Spark源码中的应用解析 本期视频通过代码实战详解了Java语言基于加锁的并发编程模型的弊端以及Scala语言中基于Actor的并发编程的机制,并展示了在Spark中基于Sc

java中基于timer计时器的图片播放

所有注释放在代码中...(图片的加入使用硬代码) package com.sxt.jtime; import java.awt.BorderLayout; public class Itimer_test extends JFrame { private JPanel contentPane; private int index = 0;//图片播放计数器 private ImageIcon[] img;//声明数组用来存放要播放的图片 JLabel label;//声明为全局变量用来显示图片

java进阶 ------ 基于Socket低层次网络编程

[本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020] Socket通讯: 网络上的两个程序通过一个双向的通讯连接实现数据的交互,这个双向链路的一端称为一个Socket.Socket通常用来实现客户方和服务方的连接.Socket是TCP/IP协议的一个十分流行的编程界面,一个Socket由一个IP地址和一个端口号唯一确定. 在传统的UNIX环境下可以操作TCP/IP协议的接口不止Socket一个,Socket所支持的协议种类不光

基于Socket实现网络编程

Socket是网络上两个程序间双向通讯的一端,它既可以发送请求,也可以接收请求,利用它可以方便的编写网络上数据的传递,在java中,有专门的类类处理用户的请求和响应.利用Socket 类的方法,就可以实现两台计算机之间的通信,那么怎么利用socket进行网络编程呢?我试试水~ 网络中的进程之间是如何进行通信的? 本地进程间通信(IPC)有很多种方法,简而言之可以归结为以下四类: 消息传递(管道,FIFO,消息队列); 同步(互斥量,条件变量,读写锁,文件和写记录锁,信号量): 内存共享(匿名的和