Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: M33G: использование GPRS для GET/POST запроса
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > Сотовая связь и ее приложения
POLL
Есть модуль M33G.
Можно с его помощью загружать документы из интернета без использование дополнительных драйверов?
Допустим загрузить страницу с яндекса или гугла.

Пробовал
AT+CGDCONT=1,"IP","internet"
AT+COPS=0
AT+CGATT=1
AT+CGPADDR=1
AT+CREG=2
AT+CGDATA="PPP",1
дальше пишет Connect и идут разные символы...

Например, у модулей Sagem Hilo можно напрямую загружать документы.
POLL
Немного разобрался с соединением. Единственно не могу понять, как после соединения отправить на сервер GET-запрос.
Тестирую в гипертерминале, после соединения данные не вводятся с клавиатуры.
По идее нужно отправить "GET / HTTP/1.1" и должен придти ответ, но вот после "Wait Socket Open -> OK" (в data mode) не пишется ничего.
Есть какая-то хитрость?

Цитата
AT+CGDCONT=1,"IP","internet"
AT%CGPCO=1,"PAP,,",1
AT$NOSLEEP=1
AT$DESTINFO="www.google.com",1,80,1
AT$TIMEOUT=1000
ATD*97#
Wait Socket Open

OK
rx3apf
Цитата(POLL @ Jun 13 2011, 15:14) *
Тестирую в гипертерминале, после соединения данные не вводятся с клавиатуры.

"Не вводятся" - в смысле, не видны ? Но если соединение установлено (модуль перешел в режим передачи данных), и в терминале не включено локальное эхо, то ничего и не будет видно (данные ушли, но никто эхо не послал).

Цитата
По идее нужно отправить "GET / HTTP/1.1" и должен придти ответ, но вот после "Wait Socket Open -> OK" (в data mode) не пишется ничего.
Есть какая-то хитрость?

"Wait Socket Open" - это, очевидно, породил сам модуль. Если "OK" означает, что соединение установлено, то можно посылать запрос. А хитрость - да, есть. Запрос должен завершаться _двойным_ комплектом <Cr> <Lf>. Т.е. 0D 0A 0D 0A. А, да - а зачем после "GET еще слэш ? Не надо, должно быть "GET HTTP/1.1<Cr><Lf><Cr><Lf>".
POLL
Цитата(rx3apf @ Jun 14 2011, 18:55) *
"Не вводятся" - в смысле, не видны ? Но если соединение установлено (модуль перешел в режим передачи данных), и в терминале не включено локальное эхо, то ничего и не будет видно (данные ушли, но никто эхо не послал).


"Wait Socket Open" - это, очевидно, породил сам модуль. Если "OK" означает, что соединение установлено, то можно посылать запрос. А хитрость - да, есть. Запрос должен завершаться _двойным_ комплектом <Cr> <Lf>. Т.е. 0D 0A 0D 0A. А, да - а зачем после "GET еще слэш ? Не надо, должно быть "GET HTTP/1.1<Cr><Lf><Cr><Lf>".


Спасибо за ответ, но что-то у меня не получилось.
После Wait Socket Open -> OK ввожу в терминале (текст)
GET / HTTP/1.1 0D 0A 0D 0A
или
GET / HTTP/1.1 <Cr><Lf><Cr><Lf>
не выходит.
видимо, что-то в конце не так ввожу.
после по таймауту коннект закрывается (NO CARRIER)
rx3apf
Цитата(POLL @ Jun 15 2011, 00:59) *
GET / HTTP/1.1 <Cr><Lf><Cr><Lf>
не выходит.
видимо, что-то в конце не так ввожу.
после по таймауту коннект закрывается (NO CARRIER)

Еще раз - зачем между GET и HTTP слэш ? Сказано же - должно быть "GET HTTP/1.1<Cr><Lf><Cr><Lf>".
А если дать "GET / HTTP/1.1<Cr><Lf><Cr><Lf>", то ничего и не получится.

Стоп, отставить ! Я уже подзабыл - там ведь между "GET" и "HTTP" вводится url. Проверил - www.google.com почему-то игнорирует и просто слеш, и даже нормальный url к index.htm, а вот www.yandex.ru - отвечает. В принципе да, один слеш - это в корень. Но гугл почему-то не хочет... Никогда в эти тонкости не вникал, поскольку работал именно с url (полным), и запрос именно в такой (короткой) форме, без всяких там HOSTNAME. Да, и помнится мне, что в варианте "HTTP/1.1" был где-то затык, пользуюсь "HTTP/1.0", на это все отвечают.


Да, я надеюсь, Вы вводили 0D 0A 0D 0A как четыре байта данных с соответствующим значением, а не текстом "0D 0A 0D 0A" ?
sobr
Цитата(rx3apf @ Jun 15 2011, 04:22) *
Еще раз - зачем между GET и HTTP слэш ? Сказано же - должно быть "GET HTTP/1.1<Cr><Lf><Cr><Lf>".
А если дать "GET / HTTP/1.1<Cr><Lf><Cr><Lf>", то ничего и не получится.

Стоп, отставить ! Я уже подзабыл - там ведь между "GET" и "HTTP" вводится url. Проверил - www.google.com почему-то игнорирует и просто слеш, и даже нормальный url к index.htm, а вот www.yandex.ru - отвечает. В принципе да, один слеш - это в корень. Но гугл почему-то не хочет... Никогда в эти тонкости не вникал, поскольку работал именно с url (полным), и запрос именно в такой (короткой) форме, без всяких там HOSTNAME. Да, и помнится мне, что в варианте "HTTP/1.1" был где-то затык, пользуюсь "HTTP/1.0", на это все отвечают.
Вот что Opera шлет:
Код
GET / HTTP/1.1
User-Agent: Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.8.131 Version/11.10
Host: localhost:8000
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: ru-RU,ru;q=0.9,en;q=0.8
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
В конце "0D 0A 0D 0A"
POLL
Цитата(rx3apf @ Jun 15 2011, 02:22) *
Да, я надеюсь, Вы вводили 0D 0A 0D 0A как четыре байта данных с соответствующим значением, а не текстом "0D 0A 0D 0A" ?


В терминале я просто текстом вводил
GET / HTTP/1.1 0d 0a 0d 0a

Я не прав, нужно по другому?
Может в запросе еще кавычки нужны вокруг?
"GET / HTTP/1.1 0d 0a 0d 0a"
rx3apf
Цитата(POLL @ Jun 15 2011, 08:56) *
В терминале я просто текстом вводил
GET / HTTP/1.1 0d 0a 0d 0a

Я не прав, нужно по другому?
Может в запросе еще кавычки нужны вокруг?
"GET / HTTP/1.1 0d 0a 0d 0a"

<Cr> (0D hex) и <Lf> (0A hex) - это байты с соответствующим значением. Первый вводится нажатием "Enter", второй - с помощью цифровой клавиатуры (не помню, может быть, 0A и не обязателен, но делаю, как привык). Кавычек быть не должно. И проще это сделать, заготовив файл с таким содержанием и отправлять его по нажатию функциональной клавиши или сделать соответствующий макрос для отправки такого содержания.

Но вот что гугл не берет ни слеш, ни даже url к index.htm - действительно, проверил. Пустышку, без url - берет, вываливает в ответ кучу ругани. Проверить все это можно и без модуля, использовав любую терминалку, работающую через telnet с произвольно задаваемым портом, чтобы можно было работать через порт 80.
etoja
Цитата(rx3apf @ Jun 15 2011, 11:09) *
Но вот что гугл не берет ни слеш, ни даже url к index.htm - действительно, проверил. Пустышку, без url - берет, вываливает в ответ кучу ругани.



Для гугля на стороне клиента должна работать ява-машина и обработчик ява-скриптов.
Slonofil
Послушайте, вместо CR/LF в виде непонятных hex-байтов не проще ли вводить как раньше '\r' '\n'? К примеру, строка будет выглядеть как
GET / HTTP/1.1 \r\n\r\n
POLL
Цитата(Slonofil @ Jun 15 2011, 12:27) *
Послушайте, вместо CR/LF в виде непонятных hex-байтов не проще ли вводить как раньше '\r' '\n'? К примеру, строка будет выглядеть как
GET / HTTP/1.1 \r\n\r\n


Ньюанс в том, что модему нужно дать понять что ввод завершен и нужно отправить данные.
\r\n - для модема в data mode будет всего лишь набором данных.

Например, когда набираешь SMS - вводишь текст, переводы строк. И потом чтоб отправить сообщение посылаешь на модем ctrl-z (если через терминал) или если через микроконтроллер то символ 26 (ASCII). Это будет означать конец сообщения и далее отправка.

Вот и тут нужно понять, что там в конце нужно послать.
Сделал запрос производителю, посмотрим ответит ли...
rx3apf
Цитата(POLL @ Jun 15 2011, 12:42) *
Вот и тут нужно понять, что там в конце нужно послать.

А это надо внимательно читать описание модема. У SIM900 в "прозрачном" режиме, например, передача произойдет по достижению порогового значения либо по таймауту.
POLL
Цитата(rx3apf @ Jun 15 2011, 12:59) *
А это надо внимательно читать описание модема.

Так читал - об этом ничего не написали.

Написали тока об: +++, ATO, ATH
И все. Это у них в Raw Data Interface.

А в самом модуле для M2M у них своя фитча есть
Цитата
transmit TCP data (text mode)
AT+CFUN=1
OK
AT+COPS=0
OK
AT+CGATT=1
OK
AT$NWACT=1,"INTERNET"
OK
AT$NWSO=1,1
OK
AT$NWDF=1,1
OK
AT$NWCN=1,1,0,"168.95.100.100",5000
OK
$NWCN:1,1 // (URC) Connection is established successfully. This session is ready to transmit
data.
AT$NWTX=1,"TCP test 1"
OK
(Server receives "TCP test 1")
$NWTX:1,0 // (URC) The TCP server has received all data successfully.
(Server responses "10 bytes data received!")
$NWRX: 1,23,23 // (URC, module receives 23 bytes data
AT$NWDR=1,23
$NWDR: 1,23,0,"10 bytes data received!"
OK


Тока мне она в данном случае не подходит, т.к. я хочу обращаться ко внешним ресурсам (сайтам) - т.е. формировать нужные POST запросы...
rx3apf
Цитата(POLL @ Jun 15 2011, 14:00) *
Так читал - об этом ничего не написали.

Написали тока об: +++, ATO, ATH
И все. Это у них в Raw Data Interface.

Так долго ли проверить ? Всего-то нужен внешний ip и открытый порт...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.