以下是我在此代码中的代码try块中的值我得到 httpconn = null 的值但是在第一行我将值存储到变量 httpconn < / strong>在第一行为何如此。我得到 nullpointerexception 。
public static String requestToken() { String url = Const.REQUEST_TOKEN_URL; String header = oauth_header(url, HttpProtocolConstants.HTTP_METHOD_GET); String requestTokenUrl = concatURL(url, header); HttpConnection httpConn = null; InputStream input = null; try { httpConn = (HttpConnection) Connector.open(requestTokenUrl); // kris connection httpConn.setRequestMethod(HttpProtocolConstants.HTTP_METHOD_GET); httpConn.setRequestProperty("WWW-Authenticate","OAuth realm=http://twitter.com/"); httpConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); input = httpConn.openDataInputStream(); int resp = httpConn.getResponseCode(); if (resp == HttpConnection.HTTP_OK) { StringBuffer buffer = new StringBuffer(); int ch; while ( (ch = input.read()) != -1) { buffer.append( (char) ch); } String content = buffer.toString(); Const.token = content.substring(content.indexOf((Const.OAUTH_TOKEN+"="))+(Const.OAUTH_TOKEN+"=").length(), content.indexOf('&')); Const.tokenSecret = content.substring(content.indexOf((Const.OAUTH_TOKEN_SECRET+"="))+(Const.OAUTH_TOKEN_SECRET+"=").length(), content.length()); message = httpConn.getResponseMessage(); } return message;//(getTwitterMessage(httpConn.getResponseCode())); } catch (IOException e) { return "exception"; } catch (Exception nc) { return "noConnection"; } finally { try { httpConn.close(); input.close(); } catch (IOException e) { e.printStackTrace(); }
答案 0 :(得分:1)
在finally
区块中,执行
if (httpConn != null)
httpConn.close();
if (input != null)
input.close();
如果是在您发布的代码中Connector.open()
会引发异常,httpConn
不会被初始化为null
以外的任何内容。您将捕获该异常并希望返回与其相关的信息,但在返回之前,您尝试访问引发finally
的空指针(在NullPointerException
块中)。
答案 1 :(得分:0)
在以下情况下抛出空指针异常:
在应用程序尝试在对象的情况下使用null时抛出 是必须的。其中包括:
因此,这表明您的httpConn = (HttpConnection) Connector.open(requestTokenUrl); // kris connection
无效。签入