java中xml进行报文发送和解析

  1. 利用OKhttp网络框架,进行Maven项目管理
//报文发送

<dependency>
     <groupId>com.squareup.okhttp3</groupId>
     <artifactId>okhttp</artifactId>
     <version>3.8.0</version>
</dependency>
	
//报文解析

<dependency>
     <groupId>xom</groupId>
     <artifactId>xom</artifactId>
     <version>1.2.5</version>
</dependency>
  1. 报文示例
<STUDENT> 
     <AGE>18</AGE>
     <NAME>
         <XING></XING>
         <MING>明玉</MING>
     </NAME>
     <NAME>
     	 <XING></XING>
         <MING>明德</MING>
     </NAME>
</STUDENT>
  1. 报文拼接
 StringBuffer strBuff = new StringBuffer();
 
 strBuff.append("<STUDENT>");
 strBuff.append("<AGE>18</AGE>");
 strBuff.append("<NAME>");
 strBuff.append("<XING>赵</XING>");
 strBuff.append("<MING>明玉</MING>");
 strBuff.append("</NAME>");
 strBuff.append("<NAME>");
 strBuff.append("<XING>沙</XING>");
 strBuff.append("<MING>明德</MING>");
 strBuff.append("</NAME>");
 strBuff.append("</STUDENT>");
 
 String xmlStr = strBuff.toString;
  1. 报文发送,post请求接口调用,xmlStr为xml格式请求参数体
 public String postXml(String xmlStr){
 
 	  //可改变请求参数体编码GBK/UTF-8
      RequestBody body= RequestBody.create(MediaType.parse("application/xml;charset=GBK"), xmlStr);
      //url为接口地址
      Request requestOk = new Request.Builder().url("http://192.168.0.103:8007").post(body).build();
      //网络请求
	  OkHttpClient client = new OkHttpClient.Builder().retryOnConnectionFailure(true).build();
	  //可手动设置连接时长
	  OkHttpClient client = new OkHttpClient().newBuilder().connectTimeout(60000, TimeUnit.MILLISECONDS)
                    .readTimeout(60000, TimeUnit.MILLISECONDS)
                    .build();
      //获取处理结果              
      Response response = null;
      try {
            response = client.newCall(requestOk).execute();
        } catch (IOException e) {
            e.printStackTrace();
        }
      //获取响应 
	  String jsonString = response.body().string();
      return jsonString;
  }
  1. 报文解析,进行实体解析
 //STUDENT为XML最大节点
 JAXBContext context = JAXBContext.newInstance(STUDENT.class);
 Unmarshaller unmarshaller = context.createUnmarshaller();
 
 //jsonString为报文响应
 STUDENT student = (STUDENT)unmarshaller.unmarshal(new StringReader(jsonString));
  1. 实体类
//XmlRootElement注解是将类与XML元素进行映射,XML节点与属性大小写保持一致

@XmlRootElement(name ="STUDENT")
public class STUDENT implements Serializable {

    private String AGE;
    private List<NAME> NAME;
	
	  public String getAGE() {
        return AGE;
    }

    public void setAGE(String AGE) {
        this.AGE = AGE;
    }

    public List<NAME> getNAME() {
        return NAME;
    }

    public void setNAME(List<NAME> NAME) {
        this.NAME = NAME;
    }

    @Override
    public String toString() {
        return "Cccc{" +
                "AGE='" + AGE + '\'' +
                ", NAME=" + NAME +
                '}';
    }
}
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值