我正在开发一个java代理。我有一个NullPointerException错误,我相信不应该发生。
以下是调试控制台消息:
java.lang.NullPointerException
at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:719)
at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:646)
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 JavaAgent.NotesMain(JavaAgent.java:16)
at lotus.domino.AgentBase.runNotes(Unknown Source)
at lotus.domino.NotesThread.run(Unknown Source)
这是java代理中的代码
import lotus.domino.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Date;
public class JavaAgent extends AgentBase {
public void NotesMain() {
String strAux = "[A Working URL]";
try {
Session session = getSession();
AgentContext agentContext = session.getAgentContext();
// (Your code goes here)
HttpURLConnection httpCon = (HttpURLConnection) new URL(strAux).openConnection();
httpCon.setRequestMethod("HEAD");
httpCon.setConnectTimeout(20000);
httpCon.setReadTimeout(20000);
httpCon.connect();
System.out.println(HttpCon.getURL().toString());
int responsecode = httpCon.getResponseCode();
System.out.println("Response code is " + responsecode + " - " + httpCon.getResponseMessage());
} catch(Exception e) {
e.printStackTrace();
}
}
}
基本上错误指向System.out.println("Response code is " + httpCon.getResponseCode() + " - " + httpCon.getResponseMessage());
。
事实上,URL是一个有用的链接,因为我通过在浏览器中访问来尝试它。
出现此错误的可能原因是什么?它在我为测试创建的本地笔记数据库上不起作用。但是,在一个没有在笔记中开发的普通java程序中,它可以工作。
答案 0 :(得分:2)
在发送任何内容之前获取响应代码毫无意义。您应该首先发送请求,然后获取响应代码,然后在需要时获取响应
答案 1 :(得分:1)
您可能仍然遇到代码问题,但您也可能遇到权限问题。
您的代码在IBM Lotus Domino服务器上作为Java代理运行。这意味着它受到限制它可以做什么。有三个级别的控制:Domino的AMGR任务施加的限制,分配给您的代理的限制以及JVM施加的限制。假设您是代理的签名者,您是否确保您有权运行不受限制的代理(Domiono目录中的服务器文档的安全选项卡)?您是否已检查代理上的设置(代理的“代理属性”对话框的“安全”选项卡)?如果已正确设置所有这些,则可能必须查看Domino服务器安装中的文件jvm / lib / security / java.policy。
答案 2 :(得分:1)
为我工作