2012-12-17 60 views
0

我有一個plone/zope應用程序:在這個應用程序中,我放置了一個Java applet來執行某些數據評估。我需要知道的是,如果我可以讓applet查詢zope數據庫。Java applet post閱讀zope數據庫

作爲一個嘗試,我在ZMI中創建了一個腳本,並通過POST請求在applet中調用該腳本。它在eclipse框架中工作,但我不知道這是否會在生產環境中工作(我認爲是因爲它是一個已簽名的小程序)。 無論如何,POST請求在下面的代碼完成:

String data = URLEncoder.encode("__ac_name", "UTF-8") + "=" + URLEncoder.encode("admin", "UTF-8"); 
     data += "&" + URLEncoder.encode("__ac_password", "UTF-8") + "=" + URLEncoder.encode("password", "UTF-8"); 
     data += "&" + URLEncoder.encode("form.submitted", "UTF-8") + "=" + URLEncoder.encode("1", "UTF-8"); 

URL url = new URL("http://xx.xx.xx.xx:8081/myPloneWebsite/testQueryScript"); 
URLConnection conn = url.openConnection(); 
conn.setDoOutput(true); 
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); 
wr.write(data); 
wr.flush(); 

BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream())); 
String line; 
while((line = rd.readLine()) != null) 
{ 
    System.out.println(line); 
} 
wr.close(); 
rd.close(); 

我還想添加一些參數到該腳本:我知道如何在這個java代碼做(只需要複製的用戶名,密碼結構),但不知道如何處理Python中的那些。一個參數將是一個ID:從ID = xx的對象獲取所有數據。 我創建的腳本如下,即對所有對象週期與給定的條件:

catalog = context.portal_catalog 
brains = catalog(portal_type='Permesso di costruire', review_state='S9') 
for b in brains: 
    obj = b.getObject() 
    print "%s\t%s" % (b.Title, obj.elenco_progettisti()) 

return printed 

更妙的是,如果有一種方法,使閱讀的小程序和無打印格式Zope的數據庫上寫每個屬性...

回答

2

如果我能得到小程序查詢Zope的數據庫

沒有。不容易。也許根本不是。與Java applet查詢Zope的數據庫中的一個理論方法是:

  • 揭露數據庫到網絡,通過ZEO
  • 連接從Java小程序

到ZEO但這種方法可能不值得努力。

至於參數,query string parameters怎麼樣?例如:

你的Python腳本可以處理的查詢字符串參數,如果你添加參數名稱(S)到parameters領域如:

enter image description here

[email protected]:~/ > curl http://localhost:8080/test\?foo=bar 
This is the Script (Python) "test" in http://localhost:8080 
bar 
+0

我讀了一些關於ZEO的內容,但我認爲這個開銷很大,並沒有繼續考慮這個問題。我希望有另一種選擇...關於參數我不知道這是足夠的指令「打印varname」,我認爲變量必須宣佈。只需要一個信息:如果我像管理用戶名和密碼(在POST內部)那樣管理參數,該方法是否可以工作?或者讓我在查詢字符串中公開它們?非常感謝! – Andrea