【发布时间】:2013-12-20 04:23:47
【问题描述】:
我正在开发一个 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 程序中,它可以工作。
【问题讨论】:
-
调试,看看
httpCon、getResponseCode()或getResponseMessage()哪个是null -
好的。马上回来。将尝试查看其中一个是否为空
-
它们可能都为空......
-
也许来自 Sun 软件包的错误消息可能比 NPE 更具描述性。
标签: java lotus-domino