реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> M33G: использование GPRS для GET/POST запроса, можно ли напрямую загрузить страницу из интернета
POLL
сообщение Jun 12 2011, 11:07
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 300
Регистрация: 11-06-11
Пользователь №: 65 640



Есть модуль 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 можно напрямую загружать документы.
Go to the top of the page
 
+Quote Post
POLL
сообщение Jun 13 2011, 11:14
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 300
Регистрация: 11-06-11
Пользователь №: 65 640



Немного разобрался с соединением. Единственно не могу понять, как после соединения отправить на сервер 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


Сообщение отредактировал POLL - Jun 13 2011, 11:15
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Jun 14 2011, 14:55
Сообщение #3


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(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>".
Go to the top of the page
 
+Quote Post
POLL
сообщение Jun 14 2011, 20:59
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 300
Регистрация: 11-06-11
Пользователь №: 65 640



Цитата(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)
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Jun 14 2011, 22:22
Сообщение #5


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(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" ?

Сообщение отредактировал rx3apf - Jun 14 2011, 22:46
Go to the top of the page
 
+Quote Post
sobr
сообщение Jun 15 2011, 02:12
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 926
Регистрация: 18-01-07
Пользователь №: 24 552



Цитата(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"
Go to the top of the page
 
+Quote Post
POLL
сообщение Jun 15 2011, 04:56
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 300
Регистрация: 11-06-11
Пользователь №: 65 640



Цитата(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"
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Jun 15 2011, 07:09
Сообщение #8


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(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.
Go to the top of the page
 
+Quote Post
etoja
сообщение Jun 15 2011, 07:35
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 121
Регистрация: 14-01-05
Из: Москва
Пользователь №: 1 952



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



Для гугля на стороне клиента должна работать ява-машина и обработчик ява-скриптов.
Go to the top of the page
 
+Quote Post
Slonofil
сообщение Jun 15 2011, 08:27
Сообщение #10


Местный
***

Группа: Участник
Сообщений: 327
Регистрация: 6-10-09
Из: РФ :: Ленинград
Пользователь №: 52 781



Послушайте, вместо CR/LF в виде непонятных hex-байтов не проще ли вводить как раньше '\r' '\n'? К примеру, строка будет выглядеть как
GET / HTTP/1.1 \r\n\r\n
Go to the top of the page
 
+Quote Post
POLL
сообщение Jun 15 2011, 08:42
Сообщение #11


Местный
***

Группа: Участник
Сообщений: 300
Регистрация: 11-06-11
Пользователь №: 65 640



Цитата(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). Это будет означать конец сообщения и далее отправка.

Вот и тут нужно понять, что там в конце нужно послать.
Сделал запрос производителю, посмотрим ответит ли...
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Jun 15 2011, 08:59
Сообщение #12


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



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

А это надо внимательно читать описание модема. У SIM900 в "прозрачном" режиме, например, передача произойдет по достижению порогового значения либо по таймауту.
Go to the top of the page
 
+Quote Post
POLL
сообщение Jun 15 2011, 10:00
Сообщение #13


Местный
***

Группа: Участник
Сообщений: 300
Регистрация: 11-06-11
Пользователь №: 65 640



Цитата(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 запросы...
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Jun 15 2011, 11:20
Сообщение #14


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(POLL @ Jun 15 2011, 14:00) *
Так читал - об этом ничего не написали.

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

Так долго ли проверить ? Всего-то нужен внешний ip и открытый порт...
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th June 2025 - 21:06
Рейтинг@Mail.ru


Страница сгенерированна за 0.01472 секунд с 7
ELECTRONIX ©2004-2016