http(Hyper Text Transfer Protocol,HTTP)协议:超文本传输协议,是TCP/IP协议集中的协议,是一个简单的请求–响应协议,指定了客户端发送给服务器的消息以及服务器的响应.(所有的WWW文件都必须遵守这个标准 注:WWW万维网)
URL 是统一资源定位符(Uniform Resource Locator)的简称,它表示 Internet 上某一资源的地址。通过 URL 用
户可以访问各种网络资源,比如常见的 WWW 以及 FTP 站点。浏览器可以通过解析给定的 URL 在网络上查找相
应的文件或其他资源。
如何获取文件名称?
URL url = new URL("网址");
String name = url.getFile();
//获取文件路径+名称, 并从最后一个/开始截取, 截取到结尾
name = name.substring(name.lastIndexOf("/")+1,name.length());
import org.dom4j.document;
import org.dom4j.documentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
public class Demo_phone {
public static void main(String[] args) throws IOException, documentException {
// 自定义一个手机号码
String phone ="13011321115"; //号码是随便改的
// 1. 获取到XML资源的输入流
URL url = new URL("http://apis.juhe.cn/mobile/get?phone="+phone+"&dtype=xml&key=9f3923e8f87f1ea50ed4ec8c39cc9253");
URLConnection connection = url.openConnection();
InputStream inputStream = connection.getInputStream();
// 2. 创建一个xml读取对象
SAXReader saxReader = new SAXReader();
// 3. 通过读取对象 读取xml数据,并返回文档对象
document document = saxReader.read(inputStream);
// 4. 获取根节点
Element root = document.getRootElement();
// 5. 解析内容
String code = root.elementText("resultcode");
if ("200".equals(code)){
Element result = root.element("result");
String province = result.elementText("province");
String city = result.elementText("city");
if (province.equals(city)){
System.out.println("手机号码归属地为: "+city);
}else {
System.out.println("手机号码归属地为: "+province+" "+city);
}
}else {
System.out.println("请输入正确的手机号码!");
}
}
}
运行结果
在 java 开发中,有时候需要将中文进行转码,保证传输的时候不出现乱码;最常用的方式是 : URLEncode 与 URLDecod
//URLEncode
//将普通字符串转换成 application/x-www-from-urlencoded 字符串
//字符串中的非西欧字符的内容,会被转化成%XX%XX XX 为十六进制的数字
String urlString = URLEncoder.encode("你好", "UTF-8");
System.out.println(urlString);//输出:%E4%BD%A0%E5%A5%BD
//URLDecode
//将 application/x-www-from-urlencoded 字符串转换成普通字符串
String keyWord = URLDecoder.decode("%E4%BD%A0%E5%A5%BD", "UTF-8");
System.out.println(keyWord);//输出:你好
XML可扩展标记语言(eXtensible Markup Language)。
特性:
1. xml具有平台无关性, 是一门独立的标记语言.
2. xml具有自我描述性
.XML文件是保存XML数据的一种方式
XML数据也可以以其他的方式存在(如在内存中构建XML数据)。
不要将XML语言狭隘的理解成XML文件
注: CDATA 部分中的所有内容都会被解析器忽略 ( CDATA 部分由 “” 结束:)
XStream:快速的将Java中的对象,转换为XML字符串
使用步骤:
1. 创建XStream 对象
XStream x = new XStream();
[2].修改类生成的节点名称 (默认节点名称为 包名.类名)
x.alias("节点名称",类名.class);
3. 传入对象 , 生成XML字符串
String xml字符串 = x.toXML(对象);
案例:
import com.thoughtworks.xstream.XStream;
import lombok.Data;
import java.util.Objects;
@Data
public class Demo6 {
public static void main(String[] args) {
Person p = new Person();
p.setName("张三");
p.setAge(18);
//XStream使用
//创建XStream对象
XStream x = new XStream();
//修改生成的跟节点
x.alias("haha", Person.class);
//传入对象,开始生成
String xml = x.toXML(p);
System.out.println(xml);
}
static class Person{
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + ''' +
", age=" + age +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
return age == person.age &&
Objects.equals(name, person.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}
}
运行结果:
//根据xml文档的路径来回去文档的内容,进行输出
import org.dom4j.document;
import org.dom4j.documentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.List;
public class Demo {
public static void main(String[] args) throws IOException, documentException {
// 1. 获取输入流
FileInputStream fileInputStream = new FileInputStream("d://Demo.xml");
// 2. 创建xml读取对象
SAXReader saxReader = new SAXReader();
// 3. 读取并得到文档对象
document document = saxReader.read(fileInputStream);
// 4. 通过文档获取根元素
Element root = document.getRootElement();
// 5. 开始解析元素
System.out.println(root.getName());
List es = root.elements();
for (int i = 0; i
写的xml文档
金苹果
锄禾日当午
银苹果
汗滴禾下土
运行结果:
books
1001
金苹果
锄禾日当午
------------------------------
1002
银苹果
汗滴禾下土
------------------------------
Process finished with exit code 0



