初始化
初始化HttpProvider
HttpProvider为SDK中提供http网络消息服务,他提供一种网络通信方式,提供给上层调用。
定义
Provider的接口定义如下:
public interface HttpProvider {
String post(String body, Map<String, String> headers) throws RequestException;
PStatus getStatus();
String getUrl();
}
DefaultHttpProvider
DefaultHttpProvider是实现了HttpProvider的类,其提供了build构造器,你可以使用如下方式创建一个HttpProvider
创建DefaultHttpProvider:
DefaultHttpProvider defaultHttpProvider = new DefaultHttpProvider.Builder()
.setUrl(DEFAULT_URL)
.build();
实现自定义Provider
用户还可以编写自己的类实现HttpProvider接口,来在使用自己的工具,或者库来发送网络请求
ProviderManager
ProviderManager是SDK中管理消息网络发送的类,进行网络消息的负载均衡以及节点切换控制,ProviderManager可以包含多个Provider,上层通过ProviderManager发送网络请求,由ProviderManager选择具体发送节点 创建ProviderManager:
ProviderManager providerManager = ProviderManager.createManager(defaultHttpProvider);
用户可以在创建providerManager时提供多个Provider,这样在发送网络请求的时候ProviderManager会在添加的所有Provider中根据内部策略选择一个进行发送。
ProviderManager providerManager2 = ProviderManager.createManager(defaultHttpProvider1, defaultHttpProvider2 , myHttpProvider);
获取服务(Service)
Service是SDK对外部提供的接口,用户使用SDK的功能,就需要先获取到对应的Service
Service种类
当前SDK提供2种Service(未来将会扩展):
ContractService
ContractService提供了合约相关的接口,包括部署合约,调用合约等。其接口定义如下
public interface ContractService {
Request<TxHashResponse> deploy(Transaction transaction, int... nodeIds);
Request<TxHashResponse> invoke(Transaction transaction, int... nodeIds);
Request<ReceiptResponse> getReceipt(String txHash, int... nodeIds);
}
AccountService
ContractService提供了账户相关的接口,其接口定义如下
public interface AccountService {
Account genSM2Account();
}
Server获取
Server统一通过ServiceManager获取,如:
ContractService contractService = ServiceManager.getContractService(providerManager);
AccountService accountService = ServiceManager.getAccountService(providerManager);
创建账户
在获取到账户服务之后,用户可以通过账户服务来创建一个账户,创建的账户会用来进行交易的签名
Account account = accountService.genSM2Account();