给定mystring = "O=PartyB,L=New York,C=US",有没有一种简单的方法可以将字符串转换为真实的Party对象?一直在看CordaRPCOps.wellKnownPartyFromX500Name()但不能让它起作用..。已经尝试了以下几种变体:
val rpcOps = new CordaRPCOps()
val otherParty: Party = rpcOps.wellKnownPartyFromX500Name(partyString) ?: throw Exception("Party not recognised.")
发布于 2017-11-27 09:33:59
有几种方法可以做到这一点:
将字符串解析为X500名称
val x500Name = CordaX500Name.parse("O=PartyB,L=New York,C=US")
val party = rpcOps.wellKnownPartyFromX500Name(x500Name)
直接构造X500名称
val x500Name = CordaX500Name(organisation = "PartyB", locality = "New York", country = "US")
val party = rpcOps.wellKnownPartyFromX500Name(x500Name)
模糊匹配
val matchingParties = rpcOps.partiesFromName("PartyB", false)
if (matchingParties.size != 1) {
throw IllegalArgumentException()
}
val party2 = matchingParties.single()
获取CordaRPCOps实例
下面是一个如何首先获得CordaRPCOps实例的示例:
val rpcAddress = NetworkHostAndPort(host, rpcPort)
val rpcClient = CordaRPCClient(rpcAddress)
val rpcConnection = rpcClient.start(username, password)
val cordaRPCOps = rpcConnection.proxy
发布于 2019-05-18 13:30:32
您也可以在不使用CordaRPCOps
的情况下获得Party实例。但是,该解决方案要求您能够访问ServiceHub实例。这意味着您可以从CordaService
访问它。假设serviceHub
是一个CordaService
实例。然后,尝试以下步骤:
val x500Name = CordaX500Name.parse("O=PartyB,L=New York,C=US")
val party: Party? = serviceHub.networkMapCache.getPeerByLegalName(x500Name)
如果您需要Corda服务中的Party
实例来自String
,这将非常方便,因为在Corda服务中不需要创建RPC连接。
https://stackoverflow.com/questions/47501407
复制相似问题