General

How can I send data to a server (HTTP)

userHead pierrot10 2014-09-15 11:03:18 2533 Views1 Replies
Dear all,

I spend most all the afternoon to send data to a web server.
I do have TEL0051 with an Arduino Leonardo

First I would like to know if you have working exemple code. It would be nive

Second, here my try. It alway return me
Code: Select all
void send_HTTP(){
    
   char aux_str[90];
   char fix[] = "g=2,195941,4613.161699,N,608.476854,E,1,9,1.398636,435.450073,M,48.200287,M,,0000";
  
    
    if(debug) Serial.println(F("> Starting sending data"));
    uint8_t answer=0;
    
    Serial.println(strstr(read_AT_string("AT+SAPBR=3,1,\"Contype\",\"GPRS\"", 4000,true),"OK") != NULL);
    Serial.println(strstr(read_AT_string("AT+SAPBR=3,1,\"APN\",\"intranet\"", 4000,true),"OK") != NULL);
    Serial.println(strstr(read_AT_string("AT+SAPBR=1,1", 20000,true),"OK") != NULL);

// The 3 above line return me 1. Then it sound to be good

    
    // Initializes HTTP service
    if(debug) Serial.println(F("> HTTPINIT"));
    answer = (strstr(read_AT_string("AT+HTTPINIT", 10000,true),"OK") != NULL);
    if (answer == 1)
    {
        // Sets CID parameter
        if(debug) Serial.println(F("> AT+HTTPPARA=\"CID\""));
        answer = (strstr(read_AT_string("AT+HTTPPARA=\"CID\",1", 2000,true),"OK") != NULL);
        if (answer == 1)
        {

            Serial1.println("AT+HTTPPARA=\"URL\",\"http://bipme.dyndns.org/opt/updatesql.php?g=2,195941,4613.161699,N,608.476854,E,1,9,1.398636,435.450073,M,48.200287,M,,0000\"");
            delay(10000);

            
            //read_AT_string("\"", 1,false);
            if(debug) Serial.println(F("> AT"));
            answer = (strstr(read_AT_string("AT", 5000,false),"OK") != NULL);
            if(debug_buffer)
            {
              Serial.println(F("------- Show buffer------"));
              Serial.println(buffer);
              Serial.println(F("-------------------------"));
            }
            
            if (answer == 1)
            {
                 
                answer = (strstr(read_AT_string("AT+HTTPACTION=0", 40000,false),"+HTTPACTION:0,200") != NULL);
                if (answer == 1)
                {

                    if(debug) Serial.println(F("  Done!"));
                    if(debug_buffer)
                    {
                      Serial.println(F("------- Show buffer------"));
                      Serial.println(buffer);
                      Serial.println(F("-------------------------"));
                    }
                }
                else
                {
                    if(debug) Serial.println(F("  Error getting url"));
                    if(debug_buffer)
                    {
                      Serial.println(F("------- Show buffer------"));
                      Serial.println(buffer);
                      Serial.println(F("-------------------------"));
                    }
                }

            }
            else
            {
                if(debug) Serial.println(F("  Error setting the url"));
            }
        }
        else
        {
            if(debug) Serial.println(F("  Error setting the CID"));
        }    
    }
    else
    {
        if(debug) Serial.println(F("Error initializating"));
    }

    if(strstr(read_AT_string("AT+HTTPTERM", 5000,true),"OK") != NULL);
    
}
it always return me that on my terminal
> Starting sending data
1
1
1
> HTTPINIT
> AT+HTTPPARA="CID"
> AT+HTTPPARA="URL"
> AT
------- Show buffer------
AT+HTTPPARA="URL","http://bipme.dyndns.org/opt/updatesql.php?g=AT
-------------------------
Error setting the url
Some one, can tell the AT command I have to enter and the order?
I think my big worries is to know the order of the cottect at command to send GET to a server!!

Many many many thank
2014-09-15 21:23:02 looks like the quotation mark didn't make it through from the buffer output that you sent. have you checked that? the buffer shows a line without the closing " " mark, perhaps that could be a wrong url.

userHeadPic Jose