Модераторы: javastic, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> не выполняется запрос POST 
:(
    Опции темы
anadiz
Дата 3.12.2007, 23:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 3.12.2007

Репутация: нет
Всего: нет



Посылается запрос методом POST. Пример взят из ВТК, добавлены только строки запроса(request). Соединение с сервером происходит(это видно из логов сервера) но запрос не выполняется. 
Код

 void postViaHttpConnection(String url) throws IOException {
        int status = 0;
        HttpConnection c = null;
        InputStream is = null;
        OutputStream os = null;
        String InpNick="some_nick";
        String request = "nick="+InpNick; 
        try {
            c = (HttpConnection)Connector.open(url);

            // Set the request method and headers
            c.setRequestMethod(HttpConnection.POST);
            c.setRequestProperty("User-Agent", "Profile/MIDP-1.0 Configuration/CLDC-1.0");
            c.setRequestProperty("Content-Language", "en-US");
            c.setRequestProperty("content-type", "application/x-www-form-urlencoded");
            c.setRequestProperty("content-length", "request.length()");
            // Getting the output stream may flush the headers
            os = c.openOutputStream();
            os.write(request.getBytes());
            //os.flush(); // Optional, openInputStream will flush

            // Get the status code, causing the connection to be made
            status = c.getResponseCode();

            // Any 500 status number (500, 501) means there was a server error 
            if ((status == HttpConnection.HTTP_NOT_IMPLEMENTED) ||
                    (status == HttpConnection.HTTP_VERSION) ||
                    (status == HttpConnection.HTTP_INTERNAL_ERROR) ||
                    (status == HttpConnection.HTTP_GATEWAY_TIMEOUT) ||
                    (status == HttpConnection.HTTP_BAD_GATEWAY)) {
                System.err.print("WARNING: Server error status [" + status + "] ");
                System.err.println("returned for url [" + url + "]");

                if (is != null) {
                    is.close();
                }

                if (os != null) {
                    os.close();
                }

                if (c != null) {
                    c.close();
                }

                return;
            }

            // Only HTTP_OK (200) means the content is returned.
            if (status != HttpConnection.HTTP_OK) {
                throw new IOException("Response status not OK [" + status + "]");
            }

            // Open the InputStream and get the ContentType
            is = c.openInputStream();

            String type = c.getType();
            processType(type);

            // Get the length and process the data
            int len = (int)c.getLength();

            if (len > 0) {
                byte[] data = new byte[len];
               int actual = is.read(data);
               process(data);
            } else {
                int ch;

                while ((ch = is.read()) != -1) {
                    process((byte)ch);
                }
            }
        } finally {
            if (is != null) {
                is.close();
            }

            if (os != null) {
                os.close();
            }

            if (c != null) {
                c.close();
            }
        }
    }


 на сервере лежит php скрипт с содержанием
Код

<?php


    $NICK=$_POST['nick'];
    echo $NICK;    
 ?>



все темы ниже про POST прочитаны, не помогло.
PM MAIL   Вверх
VOS
Дата 4.12.2007, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 31.1.2007

Репутация: 6
Всего: 8



Навскидку

c.setRequestProperty("content-length", "request.length()"); 

строку  "request.length()"  попробуйте заменить на размер передаваемых данных  ;)
PM MAIL   Вверх
anadiz
Дата 4.12.2007, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 3.12.2007

Репутация: нет
Всего: нет



Цитата(VOS @ 4.12.2007,  10:02)
Навскидку

c.setRequestProperty("content-length", "request.length()"); 

строку  "request.length()"  попробуйте заменить на размер передаваемых данных  ;)

Не помогло, к сожалению
PM MAIL   Вверх
Antropoid
Дата 4.12.2007, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 786
Регистрация: 1.6.2006
Где: &Ukraine==Ode ssa

Репутация: 13
Всего: 16



какую ошибку выдает клиент?


--------------------
user posted image
Задыхаясь от восторга заниматься чепухой. 
PM MAIL   Вверх
VOS
Дата 4.12.2007, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 31.1.2007

Репутация: 6
Всего: 8



Проверьте еще url на который отправляете запрос. Раз php скорее всего Linux, а он различает регистр букв.
Ну и http:// должен url включать.

PM MAIL   Вверх
W0LF
Дата 4.12.2007, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Участник
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

Репутация: 19
Всего: 20



Цитата

Код

c.setRequestProperty("content-type", "application/x-www-form-urlencoded");
c.setRequestProperty("content-length", "request.length()");


заменить на
c.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
c.setRequestProperty("Content-Length", request.length());
[/code]
User-Agent можешь ваще убрать


--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
anadiz
Дата 4.12.2007, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 3.12.2007

Репутация: нет
Всего: нет



Цитата(Antropoid @ 4.12.2007,  12:01)
какую ошибку выдает клиент?

Ошибки не выдает, просто запрос не выполняется. То есть не выводит NICK

Добавлено через 1 минуту и 13 секунд
Цитата(VOS @ 4.12.2007,  12:12)
Проверьте еще url на который отправляете запрос. Раз php скорее всего Linux, а он различает регистр букв.
Ну и http:// должен url включать.

Стучится верно, ибо в логах сервера видно, что обращения были, как раз к требуемому скрипту.
PM MAIL   Вверх
anadiz
Дата 4.12.2007, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 3.12.2007

Репутация: нет
Всего: нет



Цитата(W0LF @ 4.12.2007,  13:36)
Цитата

Код

c.setRequestProperty("content-type", "application/x-www-form-urlencoded");
c.setRequestProperty("content-length", "request.length()");


заменить на
c.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
c.setRequestProperty("Content-Length", request.length());
[/code]
User-Agent можешь ваще убрать


 setRequestProperty(java.lang.String,java.lang.String) in javax.microedition.io.HttpConnection cannot be applied to (java.lang.String,int)
        c.setRequestProperty("Content-Length", request.length());

1 error
com.sun.kvem.ktools.ExecutionException
Build failed

PM MAIL   Вверх
eugine_s
Дата 4.12.2007, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 14.11.2007
Где: Киев

Репутация: 17
Всего: 17



Цитата(anadiz @  4.12.2007,  16:08 Найти цитируемый пост)
setRequestProperty(java.lang.String,java.lang.String) in javax.microedition.io.HttpConnection cannot be applied to (java.lang.String,int)
        c.setRequestProperty("Content-Length", request.length());

1 error
com.sun.kvem.ktools.ExecutionException
Build failed


Преобразуй к String иначе ты вместо длины твоих данных отправляешь строку: request.length()  


Код

Integer.toString(int);



PM MAIL   Вверх
anadiz
Дата 4.12.2007, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 3.12.2007

Репутация: нет
Всего: нет



Цитата(eugine_s @ 4.12.2007,  16:16)
Цитата(anadiz @  4.12.2007,  16:08 Найти цитируемый пост)
setRequestProperty(java.lang.String,java.lang.String) in javax.microedition.io.HttpConnection cannot be applied to (java.lang.String,int)
        c.setRequestProperty("Content-Length", request.length());

1 error
com.sun.kvem.ktools.ExecutionException
Build failed


Преобразуй к String иначе ты вместо длины твоих данных отправляешь строку: request.length()  


Код

Integer.toString(int);

c.setRequestProperty("content-length", Integer.toString(request.length()));

запрос всё равно не прошел
PM MAIL   Вверх
VOS
Дата 4.12.2007, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 31.1.2007

Репутация: 6
Всего: 8



Бросьте код как выводите.
PM MAIL   Вверх
W0LF
Дата 4.12.2007, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Участник
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

Репутация: 19
Всего: 20



Что говорит нетворк-монитор?


--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
anadiz
Дата 4.12.2007, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 3.12.2007

Репутация: нет
Всего: нет



Цитата(VOS @ 4.12.2007,  17:11)
Бросьте код как выводите.

вывожу что именно?
код тот же, что был в начале темы, только с поправленной строкой
c.setRequestProperty("content-length", "request.length()");

PM MAIL   Вверх
dual
Дата 4.12.2007, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 19.7.2007

Репутация: нет
Всего: нет



Пишут же люди, что нужно заменить
Код

c.setRequestProperty("content-length", Integer.toString(request.length()));

на 
Код

c.setRequestProperty("Content-Length", Integer.toString(request.length()));

Так же следует сделать и для всех остальных свойств. Т.е., первое слово и все слова после '-' пишутся с заглавной буквы.

Это сообщение отредактировал(а) dual - 4.12.2007, 20:37
PM MAIL   Вверх
anadiz
Дата 4.12.2007, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 3.12.2007

Репутация: нет
Всего: нет



Код

void postViaHttpConnection(String url) throws IOException {
        int status = 0;
        HttpConnection c = null;
        InputStream is = null;
        OutputStream os = null;
        String InpNick="some_nick";
        String request = "nick="+InpNick;
        try {
            c = (HttpConnection)Connector.open(url);

            // Set the request method and headers
            c.setRequestMethod(HttpConnection.POST);
            c.setRequestProperty("User-Agent", "Profile/MIDP-1.0 Configuration/CLDC-1.0");
            c.setRequestProperty("Content-Language", "en-US");
        c.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
            c.setRequestProperty("Content-Length", Integer.toString(request.length()));
            // Getting the output stream may flush the headers
            os = c.openOutputStream();
            os.write(request.getBytes());
            //os.flush(); // Optional, openInputStream will flush

            // Get the status code, causing the connection to be made
            status = c.getResponseCode();

            // Any 500 status number (500, 501) means there was a server error 
            if ((status == HttpConnection.HTTP_NOT_IMPLEMENTED) ||
                    (status == HttpConnection.HTTP_VERSION) ||
                    (status == HttpConnection.HTTP_INTERNAL_ERROR) ||
                    (status == HttpConnection.HTTP_GATEWAY_TIMEOUT) ||
                    (status == HttpConnection.HTTP_BAD_GATEWAY)) {
                System.err.print("WARNING: Server error status [" + status + "] ");
                System.err.println("returned for url [" + url + "]");

                if (is != null) {
                    is.close();
                }

                if (os != null) {
                    os.close();
                }

                if (c != null) {
                    c.close();
                }

                return;
            }

            // Only HTTP_OK (200) means the content is returned.
            if (status != HttpConnection.HTTP_OK) {
                throw new IOException("Response status not OK [" + status + "]");
            }

            // Open the InputStream and get the ContentType
            is = c.openInputStream();

            String type = c.getType();
            processType(type);

            // Get the length and process the data
            int len = (int)c.getLength();

            if (len > 0) {
                byte[] data = new byte[len];
               int actual = is.read(data);
               process(data);
            } else {
                int ch;

                while ((ch = is.read()) != -1) {
                    process((byte)ch);
                }
            }
        } finally {
            if (is != null) {
                is.close();
            }

            if (os != null) {
                os.close();
            }

            if (c != null) {
                c.close();
            }
        }
    }


Всё равно ничего не передает(
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса

  • Прежде чем задать вопрос прочтите это!
  • Литература по Java находится здесь.
  • Литературу по Java обсуждаем здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда

  • FAQ раздела лежит здесь!
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java ME (J2ME) | Следующая тема »


 




[ Время генерации скрипта: 0.0568 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.