将LotusScript参数传递给Java

将LotusScript参数传递给Java,java,lotus-notes,lotusscript,ls2j,Java,Lotus Notes,Lotusscript,Ls2j,我正在从LotusScript(谢谢,Matt Holthe)调用一个java getHTML(urlToRead)类,该类使用常量传递URL。java代码位于java“脚本库”中。当我将常数urlToRead更改为变量时,java类不会读取该变量,我得到一个空响应。我需要使用内存中的文档,还是有更简单的方法?我需要得到一个返回的json值,这样“调用”就不起作用,除非我使用内存中的文档,这是我试图避免的。我开始认为我必须将整个代码转换为java,但我更习惯使用LotusScript。这是在No

我正在从LotusScript(谢谢,Matt Holthe)调用一个java getHTML(urlToRead)类,该类使用常量传递URL。java代码位于java“脚本库”中。当我将常数urlToRead更改为变量时,java类不会读取该变量,我得到一个空响应。我需要使用内存中的文档,还是有更简单的方法?我需要得到一个返回的json值,这样“调用”就不起作用,除非我使用内存中的文档,这是我试图避免的。我开始认为我必须将整个代码转换为java,但我更习惯使用LotusScript。这是在Notes客户端中运行的

import java.io.*;
import java.net.*;

public class GetHTML {

    public String getHTML( String urlToRead) {
        URL url;
        HttpURLConnection conn; 
          BufferedReader rd; 
          String line; 
          String result = ""; 
          try {
             url = new URL(urlToRead);
             conn = (HttpURLConnection) url.openConnection();
             conn.setRequestMethod("PUT");
             rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
             while ((line = rd.readLine()) != null) {
                result += line;
             }
             rd.close();
          } catch (Exception e) {
             e.printStackTrace();
          }
        return result;
    }
}


Uselsx "*javacon"
Use "GetHTML"

Function getWebData( myURLvar As String) As String
    Const myURL = "http://mywebsite.com/testdb.nsf/testagent1"
    Dim js As JAVASESSION
    Dim getHTMLClass As JAVACLASS
    Dim getHTMLObject As JavaObject
    Dim html As String
    Set js = New JAVASESSION
    Set getHTMLClass = js.GetClass("GetHTML")
    Set getHTMLObject = getHTMLClass.CreateObject
' next line works because it uses CONSTANT
    html = getHTMLObject.getHTML( myURL )
    Msgbox "html: " + html
' next line does not work, uses variable
    html = getHTMLObject.getHTML( myURLvar )
    Msgbox "html: " + html
    getWebData = html   
End Function

我尝试将byVal用于myURLvar,但没有任何区别。如何让java代码看到变量字符串

这不是关于使用常量或变量字符串作为getHtml()的参数。在您的示例中,这两种方法都很有效

不过,为了让它运行,我不得不在Java中更改一行(“get”而不是“PUT”):

这是我的LotusScript代理的工作版本:

UseLSX "*javacon"
Use "GetHTML"
Sub Initialize
    getWebData("http://www.spiegel.de/")
End Sub

Function getWebData( myURLvar As String) As String
    Const myURL = "http://www.spiegel.de/"
    Dim js As JAVASESSION
    Dim getHTMLClass As JAVACLASS
    Dim getHTMLObject As JavaObject
    Dim html As String
    Set js = New JAVASESSION
    Set getHTMLClass = js.GetClass("GetHTML")
    Set getHTMLObject = getHTMLClass.CreateObject
' next line works because it uses CONSTANT
    html = getHTMLObject.getHTML( myURL )
    MsgBox "html: " + html
' next line does not work, uses variable
    html = getHTMLObject.getHTML( myURLvar )
    MsgBox "html: " + html
    getWebData = html   
End Function

啊。我想写一篇文章。谢谢,克努特,我现在正在更新我的代码并进行测试。
UseLSX "*javacon"
Use "GetHTML"
Sub Initialize
    getWebData("http://www.spiegel.de/")
End Sub

Function getWebData( myURLvar As String) As String
    Const myURL = "http://www.spiegel.de/"
    Dim js As JAVASESSION
    Dim getHTMLClass As JAVACLASS
    Dim getHTMLObject As JavaObject
    Dim html As String
    Set js = New JAVASESSION
    Set getHTMLClass = js.GetClass("GetHTML")
    Set getHTMLObject = getHTMLClass.CreateObject
' next line works because it uses CONSTANT
    html = getHTMLObject.getHTML( myURL )
    MsgBox "html: " + html
' next line does not work, uses variable
    html = getHTMLObject.getHTML( myURLvar )
    MsgBox "html: " + html
    getWebData = html   
End Function