【问题标题】:converting ETrade Java code example to Coldfusion将 ETrade Java 代码示例转换为 Coldfusion
【发布时间】:2017-06-02 13:28:46
【问题描述】:

我正在 ColdFusion 服务器上实现 ETrade Java SDK。

import com.etrade.etws.account.Account; 
import com.etrade.etws.account.AccountListResponse; 
import com.etrade.etws.oauth.sdk.client.IOAuthClient; 
import com.etrade.etws.oauth.sdk.client.OAuthClientImpl; 
Import com.etrade.etws.oauth.sdk.common.Token; 
import com.etrade.etws.sdk.client.ClientRequest; 

// Variables 
public IOAuthClient client = null; 
public ClientRequest request = null; 
public Token token = null; 
public String oauth_consumer_key = null; // Your consumer key 
public String oauth_consumer_secret = null; // Your consumer secret 
public String oauth_request_token = null; // Request token  
public String oauth_request_token_secret= null; // Request token secret 

client = OAuthClientImpl.getInstance(); // Instantiate IOAUthClient 
request = new ClientRequest(); // Instantiate ClientRequest 
request.setEnv(Environment.SANDBOX); // Use sandbox environment 

request.setConsumerKey(oauth_consumer_key); //Set consumer key 
request.setConsumerSecret(oauth_consumer_secret); // Set consumer secret 
token=client.getRequestToken(request); // Get request-token object         
oauth_request_token  = token.getToken(); // Get token string 
oauth_request_token_secret = token.getSecret(); // Get token secret 

但是将 Java 转换为 ColdFusion 对我来说是新事物。我已经复制了 JAR 文件,所以我认为不需要导入。

我已经创建了变量代码部分的前三行:

<cfset client = CreateObject("java","com.etrade.etws.oauth.sdk.client.IOAuthClient") />
<cfset request = CreateObject("java","com.etrade.etws.sdk.client.ClientRequest") />
<cfset token = CreateObject("java","com.etrade.etws.oauth.sdk.common.Token") />

但是,我找不到用 //Instantiate... 或 //Set... 注释的行的良好参考

对参考的想法或链接非常开放。

提前致谢

【问题讨论】:

  • Java 函数应该以完全相同的方式调用。 request 是 ColdFusion 中的特殊变量。用别的东西。 client 也可能很特别。最后,使用&lt;cfscript&gt; 而不是标签。您可能会发现您的代码几乎完全相同。
  • 为什么这被否决了?显然是试图理解代码。但是,有问题的行使用了一些对于 Java 之外的概念(枚举、接口、构造函数)不熟悉的概念。所以这当然是一个公平的问题。

标签: java coldfusion


【解决方案1】:

(对于 cmets 来说太长了)

正确。 CF 中不需要import 语句(// Variables 部分也不需要)。尽管正如您所注意到的,导入对于识别不同类的位置很有用。

您在确定初始代码中的变量类型方面做得很好。它很接近,但有一些提示/更正:

公共 IOAuthClient 客户端 = null;

  1. 不要让变量声明欺骗你 ;-) 客户端变量的类实际上应该是 OAuthClientImpl,而不是接口“IOAuthClient”。

    CreateObject("java","com.etrade.etws.oauth.sdk.client.OAuthClientImpl").getInstance() 
    

request = ClientRequest(); // 实例化客户端请求

  1. 在 java 中,语法new SomeClass(...) 用于实例化对象。 CF 不支持 java 对象的 new 关键字。而是使用伪构造函数init():

    cRequest = CreateObject("java","com.etrade.etws.sdk.client.ClientRequest").init()
    

request.setEnv(环境.SANDBOX); // 使用沙盒环境

  1. 不幸的是,示例忘记包含Environment 类的路径。但是,如果您可以在可下载的 java 示例中找到它。 (注意,Environment是一个enum,即常量,所以不需要实例化)。

    createObject("java", "com.etrade.etws.sdk.client.Environment")
    
  2. 有些java变量名是CF中的保留字(requestclient),所以最好把它们改成别的名字,以免出现意外结果。

注意: 虽然使用 CFML 在技术上没有任何问题,但使用 cfscript 编写 java 代码更简单、更自然,因为语法非常相似。因此,请在深入了解之前考虑切换。

此外,您可能会发现this thread 很有帮助。它不是关于 E-Trade API,而是有一些关于转换应该适用于任何 java 库的 java 代码的一般技巧。一旦你掌握了基础知识,就只是起泡、冲洗和重复各种课程。

【讨论】:

  • 谢谢,非常有帮助。这对我来说是一个新的领域,这是一个很好的回应。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-14
  • 2015-04-03
  • 1970-01-01
  • 2018-02-03
  • 2016-04-14
  • 2014-05-27
相关资源
最近更新 更多