SIM908 Arduino Uno Sendign JSON via HTTP

So I have SIM908 test module
(http://www.dfrobot.com/wiki/index.php/GPS/GPRS/GSM_Module_V3.0_(SKU:TEL0051))

That I have been using to gather GPS data. I want to send that data as a JSON via HTTP to my Java Node system. I have the JSON code written, but can’t quite figure out how to send that JSON info via the http. I’d prefer to use AT commands, but so far haven’t been able to produce any results.

Here is my current code. Any pointers to any projects similar to this would be appreciated. I’m finding a lot of HTTP help involving the GET commands, but I believe I need to use the POST commands? Thank you all!

If theres anything else that could be improved, that’s also appreciated. I’ll take any and all advice you can give!

#include <ArduinoJson.h>

double Datatransfer(char *data_buf,char num)//convert the data to the float type
{                                           //*data_buf:the data array                                       
  double temp=0.0;                           //the number of the right of a decimal point
  unsigned char i,j;
 
  if(data_buf[0]=='-')
  {
    i=1;
    //process the data array
    while(data_buf[i]!='.')
      temp=temp*10+(data_buf[i++]-0x30);
    for(j=0;j<num;j++)
      temp=temp*10+(data_buf[++i]-0x30);
    //convert the int type to the float type
    for(j=0;j<num;j++)
      temp=temp/10;
    //convert to the negative numbe
    temp=0-temp;
  }
  else//for the positive number
  {
    i=0;
    while(data_buf[i]!='.')
      temp=temp*10+(data_buf[i++]-0x30);
    for(j=0;j<num;j++)
      temp=temp*10+(data_buf[++i]-0x30);
    for(j=0;j<num;j++)
      temp=temp/10 ;
  }
  return temp;
}
 
char ID()//Match the ID commands
{ 
  char i=0;
  char value[6]={
    '

,‘G’,‘P’,‘G’,‘G’,‘A’      };//match the gps protocol
  char val[6]={
    ‘0’,‘0’,‘0’,‘0’,‘0’,‘0’      };

while(1)
  {
    if(Serial.available())
    {
      val[i] = Serial.read();//get the data from the serial interface
      if(val[i]==value[i]) //Match the protocol
      {   
        i++;
        if(i==6)
        {
          i=0;
          return 1;//break out after get the command
        }
      }
      else
        i=0;
    }
  }
}

void comma(char num)//get ‘,’

  char val;
  char count=0;//count the number of ‘,’

while(1)
  {
    if(Serial.available())
    {
      val = Serial.read();
      if(val==’,’)
        count++;
    }
    if(count==num)//if the command is right, run return
      return;
  }

}

double latitude()//get latitude
{
  char i;
  char lat[10]={
    ‘0’,‘0’,‘0’,‘0’,‘0’,‘0’,‘0’,‘0’,‘0’,‘0’
  };

if( ID())
  {
    comma(2);
    while(1)
    {
      if(Serial.available())
      {
        lat[i] = Serial.read();
        i++;
      }
      if(i==10)
      {
        i=0;
        return Datatransfer(lat,5)/100.0;
      } 
    }
  }
}
void lat_dir()//get dimensions
{
  char i=0,val;

if( ID())
  {
    comma(3);
    while(1)
    {
      if(Serial.available())
      {
        val = Serial.read();
        Serial.write(val);
        Serial.println();
        i++;
      }
      if(i==1)
      {
        i=0;
        return;
      } 
    }
  }
}
double longitude()//get longitude
{
  char i;
  char lon[11]={
    ‘0’,‘0’,‘0’,‘0’,‘0’,‘0’,‘0’,‘0’,‘0’,‘0’,‘0’
  };

if( ID())
  {
    comma(4);
    while(1)
    {
      if(Serial.available())
      {
        lon[i] = Serial.read();
        i++;
      }
      if(i==11)
      {
        i=0;
        return Datatransfer(lon,5)/100.0,7;
       
      } 
    }
  }
}
void lon_dir()//get direction data
{
  char i=0,val;

if( ID())
  {
    comma(5);
    while(1)
    {
      if(Serial.available())
      {
        val = Serial.read();
        Serial.write(val); //Serial.println(val,BYTE);
        Serial.println();
        i++;
      }
      if(i==1)
      {
        i=0;
        return;
      } 
    }
  }
}
double altitude()//get altitude data
{
  char i,flag=0;
  char alt[8]={
    ‘0’,‘0’,‘0’,‘0’,‘0’,‘0’,‘0’,‘0’
  };

if( ID())
  {
    comma(9);
    while(1)
    {
      if(Serial.available())
      {
        alt[i] = Serial.read();
        if(alt[i]==’,’)
          flag=1;
        else
          i++;
      }
      if(flag)
      {
        i=0;
        return Datatransfer(alt,1),1;//print altitude data
 
      } 
    }
  }
}
void setup()
{
  pinMode(3,OUTPUT);//The default digital driver pins for the GSM and GPS mode
  pinMode(4,OUTPUT);
  pinMode(5,OUTPUT);
  digitalWrite(5,HIGH);
  delay(1500);
  digitalWrite(5,LOW);

digitalWrite(3,LOW);//Enable GSM mode
  digitalWrite(4,HIGH);//Disable GPS mode
  delay(2000);
  Serial.begin(9600);
  delay(5000);//GPS ready

Serial.println(“AT”); 
  delay(2000);
  //turn on GPS power supply
  Serial.println(“AT+CGPSPWR=1”);
  delay(1000);
  //reset GPS in autonomy mode
  Serial.println(“AT+CGPSRST=1”);
  delay(1000);

digitalWrite(4,LOW);//Enable GPS mode
  digitalWrite(3,HIGH);//Disable GSM mode
  delay(2000);

Serial.println("$GPGGA statement information: ");
}
void loop()
{
  while(1)
  {
   
    //Convert to JSON
   
    StaticJsonBuffer<200> jsonBuffer; //reserve memory space
   
    JsonObject& object = jsonBuffer.createObject(); //Create JSON
 
    object[“Device=”]= “GPS 1”;
    object[“Latitude=”]= latitude();
    //object[“Lat Direction=”]=lat_dir();
    object[“Longitude=”]= longitude();
  //object[“Long Direction=”]=lon_dir();
    object[“Altitude=”]= altitude();
 
    JsonArray& data= object.createNestedArray(“data”);
 
    object.prettyPrintTo(Serial);

delay(30000);
  }
}

You will notice I am using the aJSON library. That being said, besides printing to the Serial, I don't know how to test that my data is going through properly to the JSON as well. This project is a bit more than I can chew, but it is for work and the boss if confident I can figure it out. So I'll make my efforts to