Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

j2me создание post запроса

46K
24 июля 2009 года
AD1ck
2 / / 22.01.2009
необходима процедура отправляющая данные на сервер методом POST и получающая данные той самой строницы.
Я написал следующую процедуру:
Код:
private HttpConnection connection = null;
    private InputStream in = null;
    private OutputStream out = null;

   
    String HttpConnect(String DstAddr, String sentdata) throws IOException
    {
        String res=null;
        try
        {
            connection=(HttpConnection)Connector.open(DstAddr,Connector.READ_WRITE);
            connection.setRequestMethod(HttpConnection.POST);
           
            connection.setRequestProperty("user-agent", "Profile/MIDP-2.0 Configuration/CLDC-1.0");
            connection.setRequestProperty("content-type", "application/x-www-form-urlencoded");
            connection.setRequestProperty("content-length", ""+sentdata.length());
           
            out = connection.openOutputStream();
            out.write(sentdata.getBytes());
            //out.flush();
            /*
            byte[] byteRequest = getdata.getBytes();
            for (int i = 0; i < byteRequest.length; i++)
                out.writeByte(byteRequest);
            */
           
           
            int rc = connection.getResponseCode();
            if (rc != HttpConnection.HTTP_OK)
                throw new IOException("HTTP response code: " + rc);
           
            in = connection.openInputStream();

            //String type = connection.getType();
           
            int len = (int)connection.getLength();
            if (len > 0)
            {
                int actual = 0;
                int bytesread = 0 ;
                byte[] data = new byte[len];
                while ((bytesread != len) && (actual != -1))
                {
                    actual = in.read(data, bytesread, len - bytesread);
                    bytesread += actual;
                }
               
                res= new String(data);
            }
            else
            {
                int ch;
                StringBuffer sb = new StringBuffer();
                while ((ch = in.read()) != -1)
                    sb.append((char)ch);
                res=sb.toString();
            }
        }
        catch(IOException e)
        {
            res=e.toString();
        }
        finally
        {
            if (in != null)
                in.close();
            if (out != null)
                out.close();
            if (connection != null)
                connection.close();
        }
        return res;
    }

В результате нет никаких Исключений, а телефон зависает с постоянным миганием значка gprs.
(т.к. эмулятор у меня виснет в любом случае с этой программой, а телефон может давать исключения, тестирую напрямую на телефоне)

было то чтото менял-работало хоть как то и принимало данные, а потом видимо накосячил и все стало вот так. а что накосячил-из памяти вышибло.
В общем-помогите рпзобраться что может быть не так!!!:confused:
(остались закомментированные строчки-может пригодится)
355
29 июля 2009 года
&lt;SCORP&gt;
786 / / 21.10.2006
user-agent и content-length ставить не обязательно - они будут проставлены автоматом
зачем такой изврат с чтением ответа?
Код:
connection = (HttpConnection) Connector.open(url);
connection.setRequestMethod(HttpConnection.POST);
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
OutputStream os = connection.openOutputStream();
os.write(postData.getBytes());
try {
    os.close();
} catch (Exception e) {
}

InputStream is = connection.openInputStream();
ByteArrayOutputStream bytestream = new ByteArrayOutputStream();
byte buf[] = new byte[1024];
int read;
while ((read = is.read(buf)) != -1)
{
    bytestream.write(buf, 0, read);
}
String resp = new String(bytestream.toByteArray(), "UTF-8");
bytestream.close();

// ну и позакрывать всё не забыть


код (в оригинале он выглядит немного не так....) проверен уже в нескольких проектах - работает как часы

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог