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();
}
}
}
Java中基于HTTP协议网络编程的更多相关文章
- Java:基于TCP协议网络socket编程(实现C/S通信)
目录 一.前言:TCP原理简介 二.Socket编程通信 三.TCP服务器端(具体代码) 四.TCP客户端(具体代码) 五.通信效果演示 六."创意"机器人:价值一个亿的AI核心代 ...
- 基于TCP协议网络编程
1.TCP/IP是一种可靠的网络协议,它在通信的两端各建立一个Socket,从而在通信的两端之间形成网络虚拟链路: 一旦建立了虚拟的网络链路,两端的程序就可以通过虚拟链路来进行通信: 2.Java对基 ...
- Qt基于tcp协议网络编程
基于Qt网络编程: 基于tcp协议 c/s模式编程 所需要的类:QTcpServer QTcpSocket 利用qt基于tcp协议编写c/s模式程序: 两个类中的信号: QTcpServer : ne ...
- (1)线程的同步机制 (2)网络编程的常识 (3)基于tcp协议的编程模型
1.线程的同步机制(重点)1.1 基本概念 当多个线程同时访问同一种共享资源时可能会造成数据的覆盖和不一致等问题,此时就需要对线程之间进行协调和通信,该方式就叫线程的同步机制. 如: 2003年左右 ...
- (1)网络编程的常识 (2)基于tcp协议的编程模型 (3)tcp协议和udp协议的比较 (4)基于udp协议的编程模型
1.网络编程的常识 目前主流的网络通讯软件有:微信.QQ.YY.陌陌.探探.飞信.阿里旺旺.... 在吗? 1.1 七层网络模型(熟悉) 为了保证数据传递的可靠安全等等,ISO(国际标准委员会组织)将 ...
- Java网络编程和NIO详解9:基于NIO的网络编程框架Netty
Java网络编程和NIO详解9:基于NIO的网络编程框架Netty 转自https://sylvanassun.github.io/2017/11/30/2017-11-30-netty_introd ...
- Java中的UDP协议编程
一. UDP协议定义 UDP协议的全称是用户数据报,在网络中它与TCP协议一样用于处理数据包.在OSI模型中,在第四层——传输层,处于IP协议的上一层.UDP有不提供数据报分组.组装和不能对数据包 ...
- JAVA第十周《网络编程》学习内容总结
JAVA第十周<网络编程>学习内容总结 学习内容总结 1.初听到网络编程四个字可能会觉得很困难,实际上网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据,把数据发送到指定的位置, ...
- 20155324 《Java程序设计》实验五 网络编程与安全
20155324 <Java程序设计>实验五 网络编程与安全 实验内容 任务一 编写MyBC.java实现中缀表达式转后缀表达式的功能 编写MyDC.java实现从上面功能中获取的表达式中 ...
随机推荐
- Storm概念学习系列之storm的雪崩
不多说,直接上干货! Storm的雪崩问题的解决办法1: Storm概念学习系列之并行度与如何提高storm的并行度 Storm的雪崩问题的解决办法2:
- hbase本地调试环境搭建
1,前言 想要深入的了解hbase,看hbase源码是必须的.以下描述了搭建hbase本地调试环境的经历 2,安装步骤 2.1,启动hbase 1,安装java和IDE IntelliJ,下载源码等. ...
- 10步成为专业iOS开发者——新手向,从零起步
想在移动开发大餐中分一杯羹,体验最火最炫的技术?小伙子,很有眼光嘛 毫无疑问,移动开发在目前和未来几年内都会盛极一时.无数开发职位虚位以待.各大公司都在寻找各种层次的程序员——新手级.入门级.中级.老 ...
- poj1778 All Discs Considered
思路: 拓扑排序.贪心. 实现: #include <bits/stdc++.h> using namespace std; vector<]; int n1, n2; inline ...
- Android RecyclerView嵌套EditView实时更新Item数据
一.场景(例如:购物车) 1.当我们需要以列表样式管理某些数据时,可能需要列表项的某个字段可编辑 2.编辑Item上的某个字段后可能还要更新相关字段的值 二.可能遇到的问题 1.列表滑动导致输入框中的 ...
- codeforces_305C_STLset
C. Ivan and Powers of Two time limit per test 0.5 seconds memory limit per test 256 megabytes input ...
- Xamarin.Forms android实现沉浸式
在android项目里,这样设置 using System; using Android.App; using Android.Content.PM; using Android.Runtime; u ...
- ThinkPHP---TP功能类之邮件
[一]概论 (1)简介: 这里说的邮件不是平时说的email邮件(邮件地址带有@符号的),而是指的一般论坛网站的站内信息,也叫私信或者pm(private message私信) [二]站内信案例 (1 ...
- if语句,while语句,do whlie语句,循环语句
总结: 1.定义数组并赋值: var arr=[1,2,3,4]; 2.通过下标访问数组: var str=arr[0]; 3.自定义数组 var arr=new Array(); 4.数组的赋值 a ...
- Linux System
Linux System linux 是一个功能强大的操作系统,同时它是一个自由软件,是免费的.源代码开放的,编制它的目的是建立不受任何商品化软件版权制约的.全世界都能自由使用的UNIX兼容产品.各种 ...