программирование BlackBerry с Java ME - PullRequest
0 голосов
/ 16 июня 2011

Привет, друзья! Я новичок в программировании Blackberry, у меня возникают проблемы при создании HTTPConnection для отправки GET-запроса на веб-службу php, следующий код, который я пытаюсь,

    HttpConnection conn = null;
    InputStream in = null;
    StringBuffer buff = new StringBuffer();
    String result = null;
    String url = "http://localhost/blackberry/locations.php?device_id="+id+"&lat="+lat+"&lon="+lon
    try{
        conn = (HttpConnection) Connector.open(url,Connector.READ_WRITE, true);
        conn.setRequestMethod(HttpConnection.GET);
        conn.setRequestProperty("User-Agent", "Profile/MIDP-1.0 Confirguration/CLDC-1.0");
        if(conn.getResponseCode() == HttpConnection.HTTP_OK){
            in = conn.openInputStream();
            int chr;
            //xp.parse(in, handler);
            while((chr = in.read()) != -1){
                buff.append((char)chr);
            }
            result = buff.toString();
        }
        else{
            result = "Error in connection";
            return result;
        }

    } catch(Exception ex){
        System.out.println(ex.getMessage());
    } finally{
        try {
            in.close();
            conn.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

пожалуйста, предложите мне решение, Спасибо

Regard.

Ответы [ 2 ]

1 голос
/ 16 июня 2011

Извините, моя репутация не позволяет мне комментировать. Я предполагаю: вы не можете подключиться к localhost, поэтому код ответа отличается от HTTP_OK, поэтому входной поток «in» никогда не открывается, а переменная «in» по-прежнему равна нулю, когда поток собирается закрыться в finally- блок. Следовательно, NullPointerException.

Попробуйте использовать if (in != null) in.close();.

1 голос
/ 16 июня 2011

Несколько комментариев:

  • Если вы используете OS 5.0+, используйте вместо этого сетевой API. Подробнее см. этот ответ
  • Невозможно подключиться к локальному хосту из BlackBerry.
  • Используйте IOUtilities.streamToBytes вместо цикла while для чтения данных в байтовый массив.
...