java基础总结(五十五)--http发送接收xml格式报文

发送xml格式报文

使用Document将需要组装的内容放在document对象中,在发送的时候通过该对象可以得到xml格式的String对象,然后发送给其他部件。

解析xml格式报文

收到的xml格式可以是一个String对象,可以通过JAXBContext对象来解析成java bean对象。好像也可以通过Document对象来处理

重点讲解JAXB

来自https://blog.csdn.net/jiangchao858/article/details/81842774

 JAXB 教程 简单转化案例

摘要: JAXB 作为JDK的一部分,能便捷地将Java对象与XML进行相互转换,本教程从实际案例出发来讲解JAXB 2 的那些事儿。完整版目录

Java 对象转 XML


首先定义需要转换的 Java bean:Student.java

@XmlRootElement
public class Student {
    private String id;
    private String name;
    private Integer age;
 // setters, getters
}


就是这么简单,只需要在普通的Java类上添加注解@XmlRootElement。 
这里有几点需要注意:

  • JAXB 转换对象必须属于JAXBElement类型,或者使用 @XmlRootElement注解
  • JAXB 转换对象必须拥有无参数构造器(默认存在,如果被覆盖,需要显示指定)
    public static void javaToxml(Student stu) throws Exception {
        // 获取JAXB的上下文环境,需要传入具体的 Java bean -> 这里使用Student
        JAXBContext context = JAXBContext.newInstance(Student.class);
        // 创建 Marshaller 实例
        Marshaller marshaller = context.createMarshaller();
        // 设置转换参数 -> 这里举例是告诉序列化器是否格式化输出
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
        // 构建输出环境 -> 这里使用标准输出,输出到控制台Console
        PrintStream out = System.out;
        // 将所需对象序列化 -> 该方法没有返回值
        marshaller.marshal(stu, out);
    }


这里演示了最基本的Java 对象转XML过程。为了方便阅读,每一步都有简明注释。

使用 JAXB 不需要引入第三方依赖jar包。

public static void main(String[] args) throws Exception {
        Student stu = new Student("001","Tom",22);
        javaToxml(stu);
}


使用main方法简单测试一下,在控制台可以看到如下输出。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<student>
    <age>22</age>
    <id>001</id>
    <name>Tom</name>
</student>


XML 转 Java 对象


Java bean 对象依然使用Student.java。

public static void xmlTojava() throws Exception {
        // 获取JAXB的上下文环境,需要传入具体的 Java bean -> 这里使用Student
        JAXBContext context = JAXBContext.newInstance(Student.class);
        // 创建 UnMarshaller 实例
        Unmarshaller unmarshaller = context.createUnmarshaller();
        // 加载需要转换的XML数据 -> 这里使用InputStream,还可以使用File,Reader等
        InputStream stream = SimpleTest.class.getClassLoader().getResourceAsStream("lesson1.xml");
        // 将XML数据序列化 -> 该方法的返回值为Object基类,需要强转类型
        Student stu = (Student) unmarshaller.unmarshal(stream);
        // 将结果打印到控制台
        System.out.println(stu);
    }


这里演示了最基本的XML数据转换为Java 对象的过程。为了方便阅读,每一步都有简明注释。

所需的lesson1.xml文件如下:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<student>
    <age>22</age>
    <id>001</id>
    <name>Tom</name>
</student>


其实就是上一步输出的数据。

    public static void main(String[] args) throws Exception {
        xmlTojava();
    }


使用main方法简单测试一下,在控制台可以看到如下输出。

Student [id=001, name=Tom, age=22]

完整代码


可以在GitHub找到完整代码。

下节预览

本节基于简单的JAXB 代码,直观体验的JAXB的转换过程。下一节将着重介绍注解在转换过程的使用情形。

 

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
以下是Java使用HttpClient实现POST表单发送/接收XML格式报文,POST参数名为req的示例代码: ``` import org.apache.http.HttpEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.ContentType; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; import java.io.IOException; public class HttpClientExample { public static void main(String[] args) throws IOException { String url = "http://example.com/api"; String xml = "<xml><name>John</name><age>30</age></xml>"; CloseableHttpClient httpClient = HttpClients.createDefault(); HttpPost httpPost = new HttpPost(url); StringEntity entity = new StringEntity(xml, ContentType.APPLICATION_XML); httpPost.setEntity(entity); httpPost.setHeader("Content-type", "application/xml"); CloseableHttpResponse response = httpClient.execute(httpPost); try { HttpEntity responseEntity = response.getEntity(); String responseString = EntityUtils.toString(responseEntity, "UTF-8"); System.out.println(responseString); } finally { response.close(); } } } ``` 说明: - `url`:要访问的URL地址。 - `xml`:要发送XML格式报文。 - `httpClient`:创建一个默认的HttpClient实例。 - `httpPost`:创建一个HttpPost实例,并将URL地址设置为请求的目标地址。 - `entity`:将XML报文封装为一个StringEntity对象,并设置内容类型为`application/xml`。 - `httpPost.setEntity(entity)`:将封装好的XML报文设置为HTTP POST请求的主体部分。 - `httpPost.setHeader("Content-type", "application/xml")`:设置请求头部的内容类型为`application/xml`。 - `response`:执行HTTP POST请求,并返回一个CloseableHttpResponse实例。 - `responseEntity`:从响应中获取响应主体。 - `responseString`:将响应主体转换为字符串格式。 - `response.close()`:关闭响应实例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值