Получение нулевого значения переменной - PullRequest
0 голосов
/ 28 апреля 2011

Вот мой код в этом коде: значение внутри блока try. Я получаю значение httpconn = null , но в первой строке я сохраняю значение в переменной httpconn * 1004.* в первой строке почему это так.Я получаю 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();
             }

Ответы [ 2 ]

1 голос
/ 28 апреля 2011

В блоке finally выполните

if (httpConn != null)
    httpConn.close();

if (input != null)
    input.close();

Если, например, в коде, который вы разместили, Connector.open() выдает исключение, httpConn не будет инициализироваться чем-либо, кроме null. Вы поймаете это исключение и захотите вернуть информацию, связанную с ним, но перед возвращением вы попытаетесь получить доступ к нулевому указателю (в блоке finally), который вызывает NullPointerException.

0 голосов
/ 28 апреля 2011

Исключение нулевого указателя выдается, когда:

Выдается, когда приложение пытается использовать ноль в случае, когда требуется объект.К ним относятся:

  • Вызов метода экземпляра нулевого объекта.
  • Доступ или изменение поля нулевого объекта.
  • Принимаядлина нуля, как если бы это был массив.
  • Доступ или изменение слотов нуля, как если бы это был массив.
  • Бросок нулевого значения, как если бы это было значение Throwable.

Так что это означает, что ваш httpConn = (HttpConnection) Connector.open(requestTokenUrl); // kris connection не работает.Отметьте это

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...