java使用sdk_使用java开发SDK你可能会用的4个库

9344c8add5a033ae30092835024499f1.png

使用java开发SDK你可能会用的4个库

xstream

okhttp

fastjson

spring boot

xstream

用法特别简单

定义javabean

package com.xxx.bean;

public class GetAsnStatus {

private String customerCode;

private String warehouseCode;

private String asnCode;

private String currentPage;

public String getCustomerCode() {

return customerCode;

}

public void setCustomerCode(String customerCode) {

this.customerCode = customerCode;

}

public String getWarehouseCode() {

return warehouseCode;

}

public void setWarehouseCode(String warehouseCode) {

this.warehouseCode = warehouseCode;

}

public String getAsnCode() {

return asnCode;

}

public void setAsnCode(String asnCode) {

this.asnCode = asnCode;

}

public String getCurrentPage() {

return currentPage;

}

public void setCurrentPage(String currentPage) {

this.currentPage = currentPage;

}

}

然后写个简单的测试

package com.xxx.test;

import com.xxx.bean.AsnItem;

import com.xxx.bean.GetAsnStatus;

import com.xxx.bean.Product;

import com.xxx.bean.Sender;

import com.xxx.bean.SyncAsnInfo;

import com.thoughtworks.xstream.XStream;

import com.thoughtworks.xstream.io.xml.DomDriver;

public class TestGetAsnStatus {

public static void main(String[] args) {

XStream xstream = new XStream(new DomDriver("utf8"));

xstream.alias("GetAsnStatus", GetAsnStatus.class);

GetAsnStatus asn = new GetAsnStatus();

asn.setCustomerCode("TB00002");

asn.setWarehouseCode("BEST-BJ-001");

asn.setAsnCode("ASN200909100033445");

String xml = xstream.toXML(asn);

System.out.println(xml);

}

}

返回结果

//<?xml version=”1.0” encoding=”UTF-8”?>

//

//TB00002

//BEST-BJ-001

//ASN200909100033445

//

xstream with cdata

先实现一个Writer

CustomWriter

package com.xxx.core;

import com.thoughtworks.xstream.core.util.QuickWriter;

import com.thoughtworks.xstream.io.naming.NameCoder;

import com.thoughtworks.xstream.io.xml.PrettyPrintWriter;

import java.io.Writer;

public class CustomWriter extends PrettyPrintWriter {

private boolean outCDATA;

public CustomWriter(Writer writer, NameCoder nameCoder) {

super(writer, nameCoder);

}

@Override

public void startNode(String name, Class clazz) {

super.startNode(name, clazz);

outCDATA = clazz.equals(String.class);

}

@Override

protected void writeText(QuickWriter writer, String text) {

if (outCDATA) {

writer.write("

writer.write(text);

writer.write("]]>");

} else {

writer.write(text);

}

}

}

说明一下,这里startNode方法是给所有的String类型的value增加cdata,如果有自己的业务,可以在此处判断。

自己实现一个Xpp驱动,返回上面自定的writer

CustomXppDriver

package com.xxx.core;

import com.thoughtworks.xstream.io.HierarchicalStreamWriter;

import com.thoughtworks.xstream.io.xml.Xpp3Driver;

import java.io.Writer;

public class CustomXppDriver extends Xpp3Driver {

@Override

public HierarchicalStreamWriter createWriter(Writer out) {

return new CustomWriter(out, getNameCoder());

}

}

封装一个简单的工厂

package com.xxx.core;

import com.thoughtworks.xstream.XStream;

public abstract class XStreamFactory {

public static XStream buildXStream() {

return new XStream();

}

public static XStream buildXStreamCDATA() {

return new XStream(new CustomXppDriver());

}

}

buildXStreamCDATA里使用CustomXppDriver,根据上面的代码可知,CustomXppDriver里使用CustomWriter,逻辑就很清晰了

测试一下

package com.xxx.test;

import java.util.ArrayList;

import java.util.Set;

import com.xxx.bean.Product;

import com.xxx.bean.SyncProductInfo;

import com.xxx.core.XStreamFactory;

import com.xxx.dom.Person;

import com.thoughtworks.xstream.XStream;

import com.thoughtworks.xstream.io.xml.DomDriver;

public class TestSyncProductInfo {

public static void main(String[] args) {

SyncProductInfo info = new SyncProductInfo();

info.setCustomerCode("customer");

Product p1 = new Product();

p1.setName("sss");

p1.setSkuCode("TTYC43821K59160");

Product p2 = new Product();

p2.setName("bbb");

p2.setSkuCode("TTYC43821K56165");

info.getProducts().add(p1);

info.getProducts().add(p2);

XStream xStreamCDATA = XStreamFactory.buildXStreamCDATA();

xStreamCDATA.alias("SyncProductInfo", SyncProductInfo.class);

xStreamCDATA.alias("Product", Product.class);

String xmlWithCDATA = xStreamCDATA.toXML(info);

System.out.println(xmlWithCDATA);

}

}

okhttp

写SDK是要往服务器上发请求,所以需要使用http库,简单起见使用okhttp,其实在android上很多应用也是用这个库的。

OkHttp v2.0 depends on Okio v1.0. You can download its jar here. This worked for me

你还需要下载 Okio, OKhttp使用这个库用来快速的I/O处理 在这里下载 latest JAR.

get

OkHttpClient client = new OkHttpClient();

String run(String url) throws IOException {

Request request = new Request.Builder()

.url(url)

.build();

Response response = client.newCall(request).execute();

return response.body().string();

}

post

public static final MediaType JSON

= MediaType.parse("application/json; charset=utf-8");

OkHttpClient client = new OkHttpClient();

String post(String url, String json) throws IOException {

RequestBody body = RequestBody.create(JSON, json);

Request request = new Request.Builder()

.url(url)

.post(body)

.build();

Response response = client.newCall(request).execute();

return response.body().string();

}

fastjson

阿里温少开发的最快的json解析库

spring boot

全文完

欢迎关注我的公众号【node全栈】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值