我有一个使用jsoup发出http请求的java代理,当我从服务器控制台手动触发它时,此代理正常工作。但是当我在客户端上运行它时会出错(右键单击代理并运行)
这是我在Notes客户端(v9.0.1)中运行代理时在Java调试控制台中遇到的错误
java.lang.NullPointerException
at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:727)
at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:654)
at COM.ibm.JEmpower.applet.http.HttpURLConnection.getInputStream(HttpURLConnection.java:411)
at COM.ibm.JEmpower.applet.http.HttpURLConnection.getHeaderField(HttpURLConnection.java:703)
at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:399)
at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:453)
at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:434)
at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:181)
at org.jsoup.helper.HttpConnection.get(HttpConnection.java:170)
at JavaAgent.NotesMain(Unknown Source)
at lotus.domino.AgentBase.runNotes(Unknown Source)
at lotus.domino.NotesThread.run(Unknown Source)
这是我在Notes客户端(以及某些服务器上)使用的java.policy设置
grant {permission java.util.PropertyPermission" http.keepAlive", "读,写&#34 ;; };
grant {permission java.security.AllPermission; }
这是代理商代码
public class JavaAgent extends AgentBase {
public void NotesMain() {
try {
Session session = getSession();
AgentContext agentContext = session.getAgentContext();
Database db = session.getCurrentDatabase();
lotus.domino.Document d = db.getView("inbox").getFirstDocument();
String url = d.getItemValueString("Subject");
Document x = Jsoup.connect(url).userAgent("Mozilla").get();
Elements p = x.select("p");
RichTextItem rt = (RichTextItem) d.getFirstItem("Body");
rt.appendText(p.text());
d.replaceItemValue("Processed", "1");
d.save();
} catch(Exception e) {
e.printStackTrace();
}
} }
如何让代理在我的本地Notes客户端上运行?
答案 0 :(得分:3)
阅读本文:Java Agent HTTP Connection Errors
这解决了我的问题。
经过多次重新启动和切换设置以及大量拔毛后,我能够找到一组导致问题或阻止它的步骤。为了使代码有效:
- 打开Notes客户端
- 运行Java代理
- HTTP连接正常工作
醇>要收到错误:
- 打开Notes客户端
- 打开Java调试控制台
- 运行Java代理
- HTTP连接失败
醇>在运行导致Notes使用COM.ibm.JEmpower.applet.http.HttpURLConnection进行连接而不是sun.net.www.protocol的代理之前,打开Java调试控制台有一些问题。 .http.HttpURLConnection,该类的JEmpower版本是破坏的(每次实验和前面提到的APAR)。
奇怪的是,如果我运行代理然后打开调试控制台然后再次运行代理,一切都很好。它在我做任何导致问题的事情之前打开调试控制台。