
# 利用合约查询数据
1. 合约调用信息构建。 
   - 接口方法
     ContractRawMessage.class
     ```
     public Invocation buildInvocation(String chainId, String name, String function, String[] args)
     ```
     
   
   - 参数说明
     
     | 参数       | 类型         | 说明         |
     |:---|:---|:---|
     | chainId  | String     | 链名称。       |
     | name     | String     | 合约名称。      |
     | function | String     | 调用合约中的方法名。 |
     | args     | String\[\] | 合约方法参数。    |
        
     
   
   - 返回值
     
     | 类型         | 说明      |
     |:---|:---|
     | Invocation | 合约调用信息。 |
        
     
   
   
   
   
2. 查询请求消息构建。 
   - 接口方法
     ContractRawMessage.class
     ```
     public RawMessage getRawMessageBuilder(ByteString payload) throws CryptoException
     ```
     
   
   - 参数说明
     
     | 参数      | 类型         | 说明                                   |
     |:---|:---|:---|
     | payload | ByteString | 合约调用信息，由invocation.toByteString()得到。 |
        
     
   
   - 返回值
     
     | 类型         | 说明          |
     |:---|:---|
     | RawMessage | 查询请求需发送的消息。 |
        
     
   
   
   
   
3. 查询请求消息发送。 
   - 接口方法
     ContractAction.class
     ```
     public ListenableFuture<RawMessage> invoke(RawMessage rawMessage) throws InvalidParameterException
     ```
     
   
   - 参数说明
     
     | 参数         | 类型         | 说明          |
     |:---|:---|:---|
     | rawMessage | RawMessage | 查询请求需发送的消息。 |
        
     
   
   - 返回值
     
     | 类型               | 说明                 |
     |:---|:---|
     | ListenableFuture | 用于获取查询结果的future对象。 |
        
     
   
   
   
   
 
