Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java ME (J2ME) > httpconnection


Автор: zekaaa 27.4.2011, 19:45
Прошу помощи в разборе httpconnection
Нужно передатьт на сервер 1 переменную.
Выбрал метод ПОСТ.
вызываю так
Код

 try {
             String param = "login=xxx&pass=xxx&cell1="+cellid+"/n";
             postViaHttpConnection("http://dytyna.in.ua/input.php", param.getBytes());
           
           }
         catch(Exception e){
             e.printStackTrace();
           }

ошибка при компиляции...
когда убираю переменную - просто проверяя httpconnection, получается так:
Код

 try {
             postViaHttpConnection("http://dytyna.in.ua/input.php", "login=xxx&pass=xxx".getBytes());
           
           }
         catch(Exception e){
             e.printStackTrace();
           }

ошибку не выдает, но и никакой реакции нет, нет даже попыток соединения.

 код реализации ниже
Код

void postViaHttpConnection(String  url, byte[] postData) throws IOException {
    HttpConnection c = null;
    OutputStream os = null;
    int rc;

    try {
        c = (HttpConnection)Connector.open(url);

        // Устанавливаем метод запроса: POST
        c.setRequestMethod(HttpConnection.POST);
        // Добавляем хттп-заголовки. Здесь только User-Agent
        c.setRequestProperty("User-Agent",
            "Profile/MIDP-2.0 Configuration/CLDC-1.0");

        // Открываем поток для вывода пост-данных
        os = c.openOutputStream();
        os.write(postData);
        os.flush();           // Это необязательно, все равно getResponseCode() отправит поток

        // Получение кода ответа откроет соединение,
        // отправит запрос и получит HTTP-заголовки
        rc = c.getResponseCode();

        if (rc != HttpConnection.HTTP_OK) {
            throw new IOException("HTTP response code: " + rc);
        }

        // Дальше можно получить ответ, как в предыдущих примерах

    } catch (ClassCastException e) {
        throw new IllegalArgumentException("Not an HTTP URL");
    } finally {
        if (os != null)
            os.close();
        if (c != null)
            c.close();
    }
}



Очень надеюсь на вашу помощь. В Яве зелен, именно поэтому подозреваю что опытный человек напишет что оно то и не должно работать)
если так и есть - прошу помощи тогда как надо

EDIT начал искать по форуму - пришел к выводу что мне нужен отдельный поток...правда? если да то как его правильно запускать?

Автор: oxigen 28.4.2011, 11:53
1. какая ошибка при компиляции? Может просто забыл cellid инициализировать?

2. Запустил твой код на симуляторе - нормально все работает. Получает от http://dytyna.in.ua  response code = 411. и 
...<center><h1>411 Length Required</h1></center>...
Так что проблема не в коде.

3. Если запускать работу с сетью без потоков, то пока он будет работать - интерфейс программы "заморозится" и не будет ни на что реагировать. В тестовой программе это неважно - можно пока не заморачиваться с потоками.
А как запускать и работать с потоками - это в любой книге по java есть. Подробнее, чем на форуме расскажут и с примерами.

 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)