我在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 ...评论的行的良好参考。
对思想或参考链接非常开放。
提前致谢
答案 0 :(得分:1)
(评论太长)
正确。 CF中不需要import
语句(// Variables
部分也不需要)。虽然您注意到,导入对于识别不同类的位置非常有用。
您在初始代码中找出变量类型时做得非常好。它很接近,但有一些提示/更正:
public IOAuthClient client = null;
不要让变量声明欺骗你;-)客户端变量的类实际上应该是 OAuthClientImpl ,而不是接口&#34; IOAuthClient&#34;。
CreateObject("java","com.etrade.etws.oauth.sdk.client.OAuthClientImpl").getInstance()
request = new ClientRequest(); //实例化ClientRequest
在java中,语法new SomeClass(...)
用于实例化对象。 CF不支持java对象的 new 关键字。而是使用伪造构函数init():
cRequest = CreateObject("java","com.etrade.etws.sdk.client.ClientRequest").init()
request.setEnv(的环境强> .SANDBOX); //使用沙箱环境
不幸的是,该示例忘记包含Environment
类的路径。但是,如果您可以在可下载的Java示例中找到它。 (注意,Environment是enum,即常量,因此不需要实例化。)
createObject("java", "com.etrade.etws.sdk.client.Environment")
某些java变量名称是CF(request
和client
)中的保留字,因此最好将其更改为其他内容以避免意外结果。
NB:虽然使用CFML在技术上没有任何问题,但使用cfscript编写java代码更简单,更自然,因为语法非常相似。因此,在进入太远的事情之前,请考虑转换。
另外,您可能会发现this thread有帮助。它不是关于E-Trade API,而是有一些关于转换应该应用于任何java库的java代码的一般提示。一旦你掌握了基础知识,它就会为各种课程起泡沫,冲洗和重复。