user3328: I am getting an error on
AT+CSTT="TATA.DOCOMO.INTERNET","",""

What am I missing here?
Code
void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ;
  }
  Serial.println("Goodnight moon!");
  // set the data rate for the SoftwareSerial port
  mySerial.begin(9600);
  mySerial.println("Hello, world?");
  delay(3000);
  Serial.println("AT+CGATT=1");
  delay(500);
  Serial.println("AT+CGDCONT=1,\"IP\",\"TATA.DOCOMO.INTERNET\"");
  delay(500);
  Serial.println("AT+CDNSCFG=\"4.4.4.4\",\"8.8.8.8\"");
  delay(1000);
  Serial.println("AT+CSTT=\"TATA.DOCOMO.INTERNET\",\"\",\"\"");
  delay(2000);
  Serial.println("AT+CIICR");
  delay(5000);
  Serial.println("AT+CIFSR");
  delay(500);
  Serial.println("AT+CIPSTATUS");
  delay(500);
  Serial.println("AT+CDNSORIP=1");
  delay(500);
  Serial.println("AT+CIPSTART=\"TCP\",\"www.google.com\",\"80\"");
  delay(500);
  Serial.println("AT+CIPSEND");
  delay(500);
  Serial.println("AT");
}

void loop() {
  // run over and over
  if (mySerial.available())
    Serial.write(mySerial.read());
  if (Serial.available())
    mySerial.write(Serial.read());
}

Result
AT+CGATT=1

OK
AT+CGDCONT=1,"IP","TATA.DOCOMO.INTERNET"

OK
AT+CDNSCFG="4.4.4.4","8.8.8.8"

OK
AT+CSTT="TATA.DOCOMO.INTERNET","",""

ERROR
AT+CIICR

ERROR
AT+CIFSR

ERROR
AT+CIPSTATUS

OK

STATE: IP IND
AT+CDNSORIP=1

OK
AT+CIPSTART="TCP","www.google.com","80"

ERROR
AT+CIPSEND

ERROR
AT

OK

Edit
SoftwareSerial mySerial(10, 11); // RX, TX


user3206: Sorry for late Siddharth,
try to get response of only at+cstt=?
Its return a exec  syntax and by following it you can make your frame of at+cstt 
some below point may it will help

//TCP connection profile AT+CSTT?
+CSTT: "CMNET","",""
OK APN->"CMNET" 
USER->""  
PASSWORD->""

and 

AT+CSTT="CMNET"
OK
at+cstt=?
+CSTT: "APN","USER","PWD"
OK

It may help you
regards

user3277: For others who reach here by search results
Before this applying AT+CSTT command check if the modem is attached to GPRS using the AT+CGATT=? command. If the result is +CGATT: 0 this means the modem is not attached so attach the modem using AT+CGATT=1 command.
This will solve the issue as it was in my case. Even applying AT+CIPCLOSE=0 and AT+CIPSHUT didn't help until I checked that that the result of AT+CGATT=? was returning +CGATT: 0 and applied AT+CGATT=1.

3328: <p>I am getting an error on</p>

<pre><code>AT+CSTT="TATA.DOCOMO.INTERNET","",""
</code></pre>

<p>What am I missing here?</p>

<p><strong>Code</strong></p>

<pre><code>void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ;
  }
  Serial.println("Goodnight moon!");
  // set the data rate for the SoftwareSerial port
  mySerial.begin(9600);
  mySerial.println("Hello, world?");
  delay(3000);
  Serial.println("AT+CGATT=1");
  delay(500);
  Serial.println("AT+CGDCONT=1,\"IP\",\"TATA.DOCOMO.INTERNET\"");
  delay(500);
  Serial.println("AT+CDNSCFG=\"4.4.4.4\",\"8.8.8.8\"");
  delay(1000);
  Serial.println("AT+CSTT=\"TATA.DOCOMO.INTERNET\",\"\",\"\"");
  delay(2000);
  Serial.println("AT+CIICR");
  delay(5000);
  Serial.println("AT+CIFSR");
  delay(500);
  Serial.println("AT+CIPSTATUS");
  delay(500);
  Serial.println("AT+CDNSORIP=1");
  delay(500);
  Serial.println("AT+CIPSTART=\"TCP\",\"www.google.com\",\"80\"");
  delay(500);
  Serial.println("AT+CIPSEND");
  delay(500);
  Serial.println("AT");
}

void loop() {
  // run over and over
  if (mySerial.available())
    Serial.write(mySerial.read());
  if (Serial.available())
    mySerial.write(Serial.read());
}
</code></pre>

<p><strong>Result</strong></p>

<pre><code>AT+CGATT=1

OK
AT+CGDCONT=1,"IP","TATA.DOCOMO.INTERNET"

OK
AT+CDNSCFG="4.4.4.4","8.8.8.8"

OK
AT+CSTT="TATA.DOCOMO.INTERNET","",""

ERROR
AT+CIICR

ERROR
AT+CIFSR

ERROR
AT+CIPSTATUS

OK

STATE: IP IND
AT+CDNSORIP=1

OK
AT+CIPSTART="TCP","www.google.com","80"

ERROR
AT+CIPSEND

ERROR
AT

OK
</code></pre>

<p><strong>Edit</strong></p>

<pre><code>SoftwareSerial mySerial(10, 11); // RX, TX
</code></pre>
 3206: <p>Sorry for late Siddharth,</p>

<p>try to get response of only <code>at+cstt=?</code>
Its return a exec  syntax and by following it you can make your frame of <code>at+cstt</code> </p>

<p>some below point may it will help</p>

<blockquote>
  <p>//TCP connection profile AT+CSTT?</p>
  
  <p>+CSTT: "CMNET","",""</p>
  
  <p>OK APN->"CMNET" </p>
  
  <p>USER->""  </p>
  
  <p>PASSWORD->""</p>
</blockquote>

<p>and </p>

<blockquote>
  <p>AT+CSTT="CMNET"</p>
  
  <p>OK</p>
  
  <p>at+cstt=?</p>
  
  <p>+CSTT: "APN","USER","PWD"</p>
  
  <p>OK</p>
</blockquote>

<p>It may help you</p>

<p>regards</p>
 3277: <p><strong>For others who reach here by search results</strong></p>

<p>Before this applying <code>AT+CSTT</code> command check if the modem is attached to GPRS using the <code>AT+CGATT=?</code> command. If the result is <code>+CGATT: 0</code> this means the modem is not attached so attach the modem using <code>AT+CGATT=1</code> command.</p>

<p>This will solve the issue as it was in my case. Even applying <code>AT+CIPCLOSE=0</code> and <code>AT+CIPSHUT</code> didn't help until I checked that that the result of <code>AT+CGATT=?</code> was returning <code>+CGATT: 0</code> and applied <code>AT+CGATT=1</code>.</p>
