|
|
  |
M33G: использование GPRS для GET/POST запроса, можно ли напрямую загрузить страницу из интернета |
|
|
|
Jun 12 2011, 11:07
|
Местный
  
Группа: Участник
Сообщений: 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 можно напрямую загружать документы.
|
|
|
|
|
Jun 13 2011, 11:14
|
Местный
  
Группа: Участник
Сообщений: 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
|
|
|
|
|
Jun 14 2011, 14:55
|
Гуру
     
Группа: Участник
Сообщений: 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>".
|
|
|
|
|
Jun 14 2011, 20:59
|
Местный
  
Группа: Участник
Сообщений: 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)
|
|
|
|
|
Jun 14 2011, 22:22
|
Гуру
     
Группа: Участник
Сообщений: 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
|
|
|
|
|
Jun 15 2011, 02:12
|

Знающий
   
Группа: Свой
Сообщений: 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"
|
|
|
|
|
Jun 15 2011, 04:56
|
Местный
  
Группа: Участник
Сообщений: 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"
|
|
|
|
|
Jun 15 2011, 07:09
|
Гуру
     
Группа: Участник
Сообщений: 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.
|
|
|
|
|
Jun 15 2011, 08:42
|
Местный
  
Группа: Участник
Сообщений: 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). Это будет означать конец сообщения и далее отправка. Вот и тут нужно понять, что там в конце нужно послать. Сделал запрос производителю, посмотрим ответит ли...
|
|
|
|
|
Jun 15 2011, 10:00
|
Местный
  
Группа: Участник
Сообщений: 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 запросы...
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|