台灣最大程式設計社群網站
線上人數
1731
 
會員總數:246319
討論主題:189850
歡迎您免費加入會員
討論區列表 >> Java >> 請J教ava的高手- 元大證券下單API使用COM元件的問題
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
請J教ava的高手- 元大證券下單API使用COM元件的問題
價值 : 300 QP  點閱數:1307 回應數:1
樓主

alan
門外漢
0 2
22 1
發送站內信

元大證券的下單API是使用COM(Component Object Model)元件. 我已經能用excel的VBA登入,並接收到成功登入的訊息.而我改
用Java來寫時,雖然也有收到伺服器端的訊息, 但卻一直無法接收到成功登入的訊息.程式如下:


[code]
import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;

public class yuanta_order {


public static void main(String[] args) {

try{
ActiveXComponent ord = new ActiveXComponent("Yuanta.YuantaOrdCtrl.64");//jacob.dll在jdk\bin
Dispatch order = (Dispatch) ord.getObject();

Variant aa = Dispatch.call(order, "SetFutOrdConnection", new Variant("ID"),new Variant(password),new Variant("api.yuantafutures.com.tw"),new Variant(80)); //程式內沒寫回傳值,但log內仍有return: 3
//int ret = Dispatch.call(order, "SetFutOrdConnection", new Variant[]{new Variant("ID"),new Variant(password),new Variant("api.yuantafutures.com.tw"),new Variant(80)}).toInt();//可return: 3

//System.out.println(aa.TLinkStatus);//編譯錯誤,找不到TLinkStatus
//System.out.println(ret);//只印出 3


}catch(Exception e){
System.out.println("error");
}
}

}[/code]

第1~3行引用jacob套件
第11行的 Yuanta.YuantaOrdCtrl.64 為註冊表內的ProgID
第14~15行均有回傳值3(連線中),但無法收到連線成功的其它訊息, 應會回傳2(登入成功),帳號等.

另外附上VBA的程式
[/code]
Private Sub CommandButton1_Click()
Dim result As Long

result = YuantaOrd1.SetFutOrdConnection("ID", "password", "api.yuantafutures.com.tw", "80")
Cells(16, 3) = Now & ":" & CStr(result)

End Sub


Private Sub YuantaOrd1_OnLogonS(ByVal TLinkStatus As Long, ByVal AccList As String, ByVal Casq As String, ByVal Cast As String)

Cells(19, 3) = TLinkStatusRtnCn(TLinkStatus)
Cells(20, 3) = AccList
Cells(21, 3) = Casq
Cells(22, 3) = Cast

End Sub


Private Function TLinkStatusRtnCn(ByVal TLinkStatus As Long) As String

Dim retString As String

retString = "[" & CStr(TLinkStatus) & "]"

Select Case TLinkStatus
Case 0:
retString = retString & " 未進行連線"
Case 1:
retString = retString & " lsConnected LinkReady"
Case 2:
retString = retString & " 登入成功"
Case 3:
retString = retString & " 線路連線中"
Case 4:
retString = retString & " 無效憑證"
Case Else
retString = retString & " 未知錯誤"
End Select
End Function
[code]

請Java的高手, 能給予指引或方向.

搜尋相關Tags的文章: [ Java ] , [ api ] , [ COM ] , [ jacob ] ,
本篇文章發表於2017-06-01 08:39
1樓
作者回應

alan
檢舉此回應
解決了.請參考我新開的部落格, 堶惘酗斢惜舅j的下單模組,報價模組等,並提供原始碼下載,歡迎爪哇語言的同好指教.

Java與程式交易
本篇文章回覆於2017-07-06 14:23
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.