roboforum.ru

Технический форум по робототехнике.


GPRS GET/POST-запросы

Как собрать и запрограммировать робота на Arduino(Freeduino, Roboduino, Seeduino ...). Используем Wiring и Processing.

GPRS GET/POST-запросы

Сообщение staffnz » 02 апр 2015, 23:30

Здравствуйте, госпада.

Столкнулся со странностью:

Есть сервер, который прнимает GET-запросы.

http://m-ark.kps-dev.com/restws/session ... d0aGZuamg=

Ваш браузер должен, пройдя по этой ссылке получить некий код авторизации.

Пробую отправить тот же GET-запрос через SIM900.

Использую такую "конструкцию" в надежде получить тот же ответ от сервера: numdata=inet.httpGET("www.m-ark.kps-dev.com", 80, "/restws/session/token/Authorization:Basic:cmVzdF91c3I6amd0aGZuamg=", msg, 50);

Но сервер отвечает ошибками 400 или 403. Связь с сервером есть, но запрос серверу не нравится.

Что же не нравится Ардуине?

Спасибо. Код прилагаю.

#include "SIM900.h"
#include <SoftwareSerial.h>
#include "inetGSM.h"
//#include "sms.h"
//#include "call.h"

//To change pins for Software Serial, use the two lines in GSM.cpp.

//GSM Shield for Arduino
//www.open-electronics.org
//this code is based on the example of Arduino Labs.

//Simple sketch to start a connection as client.

InetGSM inet;
//CallGSM call;
//SMSGSM sms;

char msg[50];
int numdata;
char inSerial[50];
int i=0;
boolean started=false;

void setup()
{digitalWrite(9, HIGH);
//Serial connection.
Serial.begin(9600);
Serial.println("GSM Shield testing.");
//Start configuration of shield with baudrate.
//For http uses is raccomanded to use 4800 or slower.
if (gsm.begin(2400)){
Serial.println("\nstatus=READY");
started=true;
}
else
digitalWrite(9, HIGH);
Serial.println("\nstatus=IDLE");

if(started){
//GPRS attach, put in order APN, username and password.
//If no needed auth let them blank.
if (inet.attachGPRS("internet.beeline.ru", "", ""))
Serial.println("status=ATTACHED");
else
digitalWrite(9, HIGH);
Serial.println("status=ERROR");
delay(1000);

//Read IP address.
gsm.SimpleWriteln("AT+CIFSR");
delay(5000);
//Read until serial buffer is emapty.
gsm.WhileSimpleRead();

//TCP Client GET, send a GET request to the server and
//save the reply.
numdata=inet.httpGET("www.m-ark.kps-dev.com", 80, "/restws/session/token/Authorization: base: cmVzdF91c3I6amd0aGZuamg=", msg, 50);
//Print the results.
Serial.println("\nNumber of data received:");
Serial.println(numdata);
Serial.println("\nData received:");
Serial.println(msg);
}
};

void loop()
{
//Read for new byte on serial hardware,
//and write them on NewSoftSerial.
serialhwread();
//Read for new byte on NewSoftSerial.
serialswread();
};

void serialhwread(){
i=0;
if (Serial.available() > 0){
while (Serial.available() > 0) {
inSerial[i]=(Serial.read());
delay(10);
i++;
}

inSerial[i]='\0';
if(!strcmp(inSerial,"/END")){
Serial.println("_");
inSerial[0]=0x1a;
inSerial[1]='\0';
gsm.SimpleWriteln(inSerial);
}
//Send a saved AT command using serial port.
if(!strcmp(inSerial,"TEST")){
Serial.println("SIGNAL QUALITY");
gsm.SimpleWriteln("AT+CSQ");
}
//Read last message saved.
if(!strcmp(inSerial,"MSG")){
Serial.println(msg);
}
else{
Serial.println(inSerial);
gsm.SimpleWriteln(inSerial);
}
inSerial[0]='\0';
}
}

void serialswread(){
gsm.SimpleRead();
}
staffnz
 
Сообщения: 8
Зарегистрирован: 02 апр 2015, 23:11

Re: GPRS GET/POST-запросы

Сообщение Myp » 02 апр 2015, 23:39

staffnz писал(а): http://m-ark.kps-dev.com/restws/session ... d0aGZuamg=

Ваш браузер должен, пройдя по этой ссылке получить некий код авторизации.

пишет доступ запрещён.
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: GPRS GET/POST-запросы

Сообщение Madf » 03 апр 2015, 12:20

да, пишет "У вас нет доступа к этой странице."
кстати, а что такое 50 в конце строки? случаем не количество передаваемого контента? если "да", то у вас строка больше знаков и не вся по этому отправляется
я в своё время работал напрямую с сим900, никаких проблем не наблюдал
Madf
 
Сообщения: 3298
Зарегистрирован: 03 янв 2012, 12:55
Откуда: Москва
прог. языки: VB6, BASCOM, ASM...

Re: GPRS GET/POST-запросы

Сообщение staffnz » 24 апр 2015, 23:17

Извиняюсь, что сразу не ответил.

История получила продолжение: оказывает Ардуина не умеет слать заголовки (Header) в GET и POST-запросах и нужно на более низком уровне это реализовывать.

Здесь об этом заметка http://stackoverflow.com/questions/1737 ... e-rest-api

Жаль у меня не получается даже компилирование пройти, что-то компилятору не нравится.

Кто может проверит этот код? Буду признателен, если подскажете, как пройти компилирование.
staffnz
 
Сообщения: 8
Зарегистрирован: 02 апр 2015, 23:11

Re: GPRS GET/POST-запросы

Сообщение staffnz » 26 апр 2015, 20:46

Похоже, что библиотеку нужно править. Подскажите, как скачать вот эту библиотеку? Какие-то SVN...
https://code.google.com/p/gsm-shield...hes/GSMSHIELD/
staffnz
 
Сообщения: 8
Зарегистрирован: 02 апр 2015, 23:11


Вернуться в Arduino и другие Xduino

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

cron