user7807: I am working with Arduino UNO + AdaFruit CC3000 Wi-Fi shield. I ran it with a lot of websites and webpages, but for now I am going to get sub-domain from Heroku, and it has no IP address. The sub-domain is myapp.herokuapp.com. 
So, how can I send a GET request to such an application like that?
Here's the code :
 // Library headers section
 #include <Adafruit_CC3000.h>
 #include <ccspi.h>
 #include <SPI.h>
 #include <string.h>
 #include "utility/debug.h"

 // Constants area
 #define ADAFRUIT_CC3000_IRQ  3 // must be an interrupt pin (2 or 3)
 #define ADAFRUIT_CC3000_VBAT  5 // any pin
 #define ADAFRUIT_CC3000_CS  10 // any pin

 //use hardware SPI for remaining pins
 // Uno: SCK=13, MISO=12, MOSI=11
 Adafruit_CC3000 cc3000 = Adafruit_CC3000(ADAFRUIT_CC3000_CS,      ADAFRUIT_CC3000_IRQ,
                                          ADAFRUIT_CC3000_VBAT,      SPI_CLOCK_DIVIDER);
 #define WLAN_SSID  "Ibtikar.AP2"
 #define WLAN_PASS  "#ibtik@r#"
 // set security type
 // WLAN_SEC_UNSEC, WLAN_SEC_WEP, WLAN_SEC_WPA, WLAN_SEC_WPA2
 #define WLAN_SECURITY  WLAN_SEC_WPA2
 #define IDLE_TIMEOUT_MS  3000 // amount of time to wait with no date      recieved
                               // before rejecting/closing the collection
 #define WEBSITE  "myapp.herokuapp.com"
 uint32_t ip;
 void setup() {
   // put your setup code here, to run once:
    Serial.begin(115200);
    Serial.print("Free RAM: "); Serial.println(getFreeRam(), DEC);
/* Initialise the module */
    Serial.println(F("\nInitializing..."));
    delay(100);
    if (!cc3000.begin())
    {
      Serial.println(F("Couldn't begin()! Check your wiring?"));
      while(1);
    }
    Serial.print(F("\nAttempting to connect to "));           Serial.println(WLAN_SSID);
     if (!cc3000.connectToAP(WLAN_SSID, WLAN_PASS, WLAN_SECURITY)) {
       Serial.println(F("Failed!"));
       while(1);
     } 
    Serial.println(F("Connected!"));
    /* Wait for DHCP to complete */
    Serial.println(F("Request DHCP"));
    while (!cc3000.checkDHCP())
    {
       delay(100); // ToDo: Insert a DHCP timeout!
    }  

   /* Display the IP address DNS, Gateway, etc. */  
   while (! displayConnectionDetails()) {
     delay(1000);
   }

    ip = 0;
   // Try looking up the website's IP address
   Serial.print(WEBSITE); Serial.print(F(" -> "));
   while (ip == 0) {
     if (! cc3000.getHostByName(WEBSITE, &ip)) {
       Serial.println(F("Couldn't resolve!"));
     }
     delay(500);
   }
   cc3000.printIPdotsRev(ip);

   // Optional: Do a ping test on the website
   Serial.print(F("\n\rPinging ")); cc3000.printIPdotsRev(ip);      Serial.print("...");  
   int replies = cc3000.ping(ip, 5);
   Serial.print(replies); Serial.println(F(" replies"));
 }

 void loop() {
    /* Try connecting to the website.
      Note: HTTP/1.1 protocol is used to keep the server from closing the           connection before all data is read.
   */
    Adafruit_CC3000_Client www = cc3000.connectTCP(ip, 80);
   if (www.connected()) {
     www.fastrprint(F("GET "));
     www.fastrprint(F(" HTTP/1.1\r\n"));
     www.fastrprint(F("Host: myapp.herokuapp.com")); 
     //www.fastrprint(WEBSITE); 
     www.fastrprint(F("\r\n"));
     www.println();
   } else {
     Serial.println(F("Connection failed"));    
     return;
   }
   Serial.println(F("-------------------------------------"));
   unsigned long lastRead = millis();
   while (www.connected() && (millis() - lastRead < IDLE_TIMEOUT_MS)) {
     while (www.available()) {
       char c = www.read();
       Serial.print(c);
       lastRead = millis();
     }
   }
   www.close();
   Serial.println(F("-------------------------------------"));

   /* You need to make sure to clean up after yourself or the CC3000 can           freak out */
   /* the next time your try to connect ... */
        Serial.println(F("\n\nDisconnecting"));
   cc3000.disconnect();
   delay(1000);
 }


 /**************************************************************************/
 /*!
     @brief  Begins an SSID scan and prints out all the visible networks
 */
 /**************************************************************************/

 void listSSIDResults(void)
 {     
   uint32_t index;
   uint8_t valid, rssi, sec;
   char ssidname[33]; 

   if (!cc3000.startSSIDscan(&index)) {
          Serial.println(F("SSID scan failed!"));
          return;
   }

   Serial.print(F("Networks found: ")); Serial.println(index);
   Serial.println(F("================================================"));

   while (index) {
     index--;

     valid = cc3000.getNextSSID(&rssi, &sec, ssidname);

     Serial.print(F("SSID Name    : ")); Serial.print(ssidname);
     Serial.println();
     Serial.print(F("RSSI         : "));
     Serial.println(rssi);
     Serial.print(F("Security Mode: "));
     Serial.println(sec);
     Serial.println();
   }
   Serial.println(F("================================================"));

   cc3000.stopSSIDscan();
 }

      /**************************************************************************/
 /*!
     @brief  Tries to read the IP address and other connection details
 */
 /**************************************************************************/
 bool displayConnectionDetails(void)
 {
   uint32_t ipAddress, netmask, gateway, dhcpserv, dnsserv;

   if(!cc3000.getIPAddress(&ipAddress, &netmask, &gateway, &dhcpserv,      &dnsserv))
   {
     Serial.println(F("Unable to retrieve the IP Address!\r\n"));
     return false;
   }
   else
   {
     Serial.print(F("\nIP Addr: ")); cc3000.printIPdotsRev(ipAddress);
     Serial.print(F("\nNetmask: ")); cc3000.printIPdotsRev(netmask);
     Serial.print(F("\nGateway: ")); cc3000.printIPdotsRev(gateway);
     Serial.print(F("\nDHCPsrv: ")); cc3000.printIPdotsRev(dhcpserv);
     Serial.print(F("\nDNSserv: ")); cc3000.printIPdotsRev(dnsserv);
     Serial.println();
     return true;
   }
 }


user11763: You don't need to know the IP address; the getHostByName() method takes care of resolving the website to an address. It seems 2 lines are missing from your code:
    #define WEBPAGE "/index.html"  // change the string to the webpage you want

at the top, and:
   www.fastrprint(WEBPAGE);

right after www.fastrprint(F("GET "));. Without these lines, you've failed to indicate the specific webpage you wish to GET. Anyways, when i tried to open myapp.herokuapp.com, I got a message saying that its offline for maintenance, so you'll most likely fail to retrieve anything.

7807: <p>I am working with Arduino UNO + AdaFruit CC3000 Wi-Fi shield. I ran it with a lot of websites and webpages, but for now I am going to get sub-domain from <a href="https://en.wikipedia.org/wiki/Heroku" rel="nofollow">Heroku</a>, and it has no IP address. The sub-domain is <code>myapp.herokuapp.com</code>. </p>

<p>So, how can I send a GET request to such an application like that?</p>

<p>Here's the code :</p>

<pre><code> // Library headers section
 #include &lt;Adafruit_CC3000.h&gt;
 #include &lt;ccspi.h&gt;
 #include &lt;SPI.h&gt;
 #include &lt;string.h&gt;
 #include "utility/debug.h"

 // Constants area
 #define ADAFRUIT_CC3000_IRQ  3 // must be an interrupt pin (2 or 3)
 #define ADAFRUIT_CC3000_VBAT  5 // any pin
 #define ADAFRUIT_CC3000_CS  10 // any pin

 //use hardware SPI for remaining pins
 // Uno: SCK=13, MISO=12, MOSI=11
 Adafruit_CC3000 cc3000 = Adafruit_CC3000(ADAFRUIT_CC3000_CS,      ADAFRUIT_CC3000_IRQ,
                                          ADAFRUIT_CC3000_VBAT,      SPI_CLOCK_DIVIDER);
 #define WLAN_SSID  "Ibtikar.AP2"
 #define WLAN_PASS  "#ibtik@r#"
 // set security type
 // WLAN_SEC_UNSEC, WLAN_SEC_WEP, WLAN_SEC_WPA, WLAN_SEC_WPA2
 #define WLAN_SECURITY  WLAN_SEC_WPA2
 #define IDLE_TIMEOUT_MS  3000 // amount of time to wait with no date      recieved
                               // before rejecting/closing the collection
 #define WEBSITE  "myapp.herokuapp.com"
 uint32_t ip;
 void setup() {
   // put your setup code here, to run once:
    Serial.begin(115200);
    Serial.print("Free RAM: "); Serial.println(getFreeRam(), DEC);
/* Initialise the module */
    Serial.println(F("\nInitializing..."));
    delay(100);
    if (!cc3000.begin())
    {
      Serial.println(F("Couldn't begin()! Check your wiring?"));
      while(1);
    }
    Serial.print(F("\nAttempting to connect to "));           Serial.println(WLAN_SSID);
     if (!cc3000.connectToAP(WLAN_SSID, WLAN_PASS, WLAN_SECURITY)) {
       Serial.println(F("Failed!"));
       while(1);
     } 
    Serial.println(F("Connected!"));
    /* Wait for DHCP to complete */
    Serial.println(F("Request DHCP"));
    while (!cc3000.checkDHCP())
    {
       delay(100); // ToDo: Insert a DHCP timeout!
    }  

   /* Display the IP address DNS, Gateway, etc. */  
   while (! displayConnectionDetails()) {
     delay(1000);
   }

    ip = 0;
   // Try looking up the website's IP address
   Serial.print(WEBSITE); Serial.print(F(" -&gt; "));
   while (ip == 0) {
     if (! cc3000.getHostByName(WEBSITE, &amp;ip)) {
       Serial.println(F("Couldn't resolve!"));
     }
     delay(500);
   }
   cc3000.printIPdotsRev(ip);

   // Optional: Do a ping test on the website
   Serial.print(F("\n\rPinging ")); cc3000.printIPdotsRev(ip);      Serial.print("...");  
   int replies = cc3000.ping(ip, 5);
   Serial.print(replies); Serial.println(F(" replies"));
 }

 void loop() {
    /* Try connecting to the website.
      Note: HTTP/1.1 protocol is used to keep the server from closing the           connection before all data is read.
   */
    Adafruit_CC3000_Client www = cc3000.connectTCP(ip, 80);
   if (www.connected()) {
     www.fastrprint(F("GET "));
     www.fastrprint(F(" HTTP/1.1\r\n"));
     www.fastrprint(F("Host: myapp.herokuapp.com")); 
     //www.fastrprint(WEBSITE); 
     www.fastrprint(F("\r\n"));
     www.println();
   } else {
     Serial.println(F("Connection failed"));    
     return;
   }
   Serial.println(F("-------------------------------------"));
   unsigned long lastRead = millis();
   while (www.connected() &amp;&amp; (millis() - lastRead &lt; IDLE_TIMEOUT_MS)) {
     while (www.available()) {
       char c = www.read();
       Serial.print(c);
       lastRead = millis();
     }
   }
   www.close();
   Serial.println(F("-------------------------------------"));

   /* You need to make sure to clean up after yourself or the CC3000 can           freak out */
   /* the next time your try to connect ... */
        Serial.println(F("\n\nDisconnecting"));
   cc3000.disconnect();
   delay(1000);
 }


 /**************************************************************************/
 /*!
     @brief  Begins an SSID scan and prints out all the visible networks
 */
 /**************************************************************************/

 void listSSIDResults(void)
 {     
   uint32_t index;
   uint8_t valid, rssi, sec;
   char ssidname[33]; 

   if (!cc3000.startSSIDscan(&amp;index)) {
          Serial.println(F("SSID scan failed!"));
          return;
   }

   Serial.print(F("Networks found: ")); Serial.println(index);
   Serial.println(F("================================================"));

   while (index) {
     index--;

     valid = cc3000.getNextSSID(&amp;rssi, &amp;sec, ssidname);

     Serial.print(F("SSID Name    : ")); Serial.print(ssidname);
     Serial.println();
     Serial.print(F("RSSI         : "));
     Serial.println(rssi);
     Serial.print(F("Security Mode: "));
     Serial.println(sec);
     Serial.println();
   }
   Serial.println(F("================================================"));

   cc3000.stopSSIDscan();
 }

      /**************************************************************************/
 /*!
     @brief  Tries to read the IP address and other connection details
 */
 /**************************************************************************/
 bool displayConnectionDetails(void)
 {
   uint32_t ipAddress, netmask, gateway, dhcpserv, dnsserv;

   if(!cc3000.getIPAddress(&amp;ipAddress, &amp;netmask, &amp;gateway, &amp;dhcpserv,      &amp;dnsserv))
   {
     Serial.println(F("Unable to retrieve the IP Address!\r\n"));
     return false;
   }
   else
   {
     Serial.print(F("\nIP Addr: ")); cc3000.printIPdotsRev(ipAddress);
     Serial.print(F("\nNetmask: ")); cc3000.printIPdotsRev(netmask);
     Serial.print(F("\nGateway: ")); cc3000.printIPdotsRev(gateway);
     Serial.print(F("\nDHCPsrv: ")); cc3000.printIPdotsRev(dhcpserv);
     Serial.print(F("\nDNSserv: ")); cc3000.printIPdotsRev(dnsserv);
     Serial.println();
     return true;
   }
 }
</code></pre>
 11763: <p>You don't need to know the IP address; the <code>getHostByName()</code> method takes care of resolving the website to an address. It seems 2 lines are missing from your code:</p>

<pre><code>    #define WEBPAGE "/index.html"  // change the string to the webpage you want
</code></pre>

<p>at the top, and:</p>

<pre><code>   www.fastrprint(WEBPAGE);
</code></pre>

<p>right after <code>www.fastrprint(F("GET "));</code>. Without these lines, you've failed to indicate the specific webpage you wish to GET. Anyways, when i tried to open <code>myapp.herokuapp.com</code>, I got a message saying that its offline for maintenance, so you'll most likely fail to retrieve anything.</p>
