Arduino Http Client Library

I am trying to use the Http Client Library on my Wifi shield found in (https://www.arduino.cc/en/Main/ArduinoWiFiShield) but I am experiencing connectivity issues. It makes me wonder if it only works on the shield found in (https://www.arduino.cc/en/Main/ArduinoWiFiShield101). Can someone tell me if thats the case?

When you post URLs please use the chain links icon on the toolbar to make them clickable.

Where did you find this HTTP Client library?

pert:
When you post URLs please use the chain links icon on the toolbar to make them clickable.

Where did you find this HTTP Client library?

Sorry about that! I found that in the manage libraries tab in the IDE.

I edited the sample program in the IDE to work with the wifi shield now. While I am making the post request, I am getting a status code = -2. Not sure what that means. Would you have any clue?

I see two in Library manager with similar names, one is named ArduinoHttpClient and the other is named HttpClient, which one are you using?

pert:
I see two in Library manager with similar names, one is named ArduinoHttpClient and the other is named HttpClient, which one are you using?

The ArduinoHttpClient one. Will adding my modified code here work? I am doing the SimplePost example using the wifi shield.

#include <ArduinoHttpClient.h>
#include <SPI.h>
#include <WiFi.h>
#include "config.h"

//char ssid[] = "JioFi2_C5E559"; //  your network SSID (name)
//char pass[] = "8nfdtyc8jf";    // your network password (use for WPA, or use as key for WEP)
int keyIndex = 0;            // your network key Index number (needed only for WEP)

int status = WL_IDLE_STATUS;
// if you don't want to use DNS (and reduce your sketch size)
// use the numeric IP instead of the name for the server:
//IPAddress server(35,154,192,57);  // numeric IP for Google (no DNS)
char serverAddress[] = "http://35.154.192.57/smart_stove/api.php/checkText";    // name address for Google (using DNS)
//char serverAddress[] = "35.154.192.57";
int port = 8080;

// Initialize the Ethernet client library
// with the IP address and port of the server
// that you want to connect to (port 80 is default for HTTP):
WiFiClient client;
HttpClient client1 = HttpClient(client, serverAddress, port);
String response;
int statusCode = 0;

void setup() {
  //Initialize serial and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }

  // check for the presence of the shield:
  if (WiFi.status() == WL_NO_SHIELD) {
    Serial.println("WiFi shield not present");
    // don't continue:
    while (true);
  }

  String fv = WiFi.firmwareVersion();
  if (fv != "1.1.0") {
    Serial.println("Please upgrade the firmware");
  }

  // attempt to connect to Wifi network:
  while (status != WL_CONNECTED) {
    Serial.print("Attempting to connect to SSID: ");
    Serial.println(ssid);
    // Connect to WPA/WPA2 network. Change this line if using open or WEP network:
    status = WiFi.begin(ssid, pass);

    // wait 10 seconds for connection:
    delay(10000);
  }
  Serial.println("Connected to wifi");
  printWifiStatus();

  /*Serial.println("\nStarting connection to server...");
  // if you get a connection, report back via serial:
  if (client.connect(server, 8080)) {
    Serial.println("connected to server");
    // Make a HTTP request:
    client.println("POST /login HTTP/1.1");
    client.println("Host: 35.154.192.57");
    client.println("Connection: close");
    //client.println("Content-Type: application/x-www-form-urlencoded");
    //client.println();
    //client.print("username=");
    //client.print("john");
    //client.print("&password=");
    //client.println("pass1"); 
    client.println();
    client.println("1");
  }*/
}


void loop() {
  // if there are incoming bytes available
  // from the server, read them and print them:
  Serial.println("making POST request");
  String contentType = "text/html";
  String postData = "one";

  client1.post("/", contentType, postData);

  // read the status code and body of the response
  statusCode = client1.responseStatusCode();
  response = client1.responseBody();

  Serial.print("Status code: ");
  Serial.println(statusCode);
  Serial.print("Response: ");
  Serial.println(response);

  //Serial.println("Wait five seconds");
  //delay(5000);
  
  
  /*while (client.available()) {
    char c = client.read();
    Serial.write(c);
  }*/

  // if the server's disconnected, stop the client:
  if (!client.connected()) {
    Serial.println();
    Serial.println("disconnecting from server.");
    client.stop();

    // do nothing forevermore:
    while (true);
  }
}


void printWifiStatus() {
  // print the SSID of the network you're attached to:
  Serial.print("SSID: ");
  Serial.println(WiFi.SSID());

  // print your WiFi shield's IP address:
  IPAddress ip = WiFi.localIP();
  Serial.print("IP Address: ");
  Serial.println(ip);

  // print the received signal strength:
  long rssi = WiFi.RSSI();
  Serial.print("signal strength (RSSI):");
  Serial.print(rssi);
  Serial.println(" dBm");
}

I think it should work fine with your WiFi shield. From GitHub - arduino-libraries/ArduinoHttpClient: Arduino HTTP Client library

Requires a networking hardware and a library that provides transport specific Client instance, such as:

  • WiFi101
  • Ethernet
  • WiFi
  • GSM

It is working now I think.

The status code I am getting is -2
and
I am getting no response.

So the code compiles fine unlike earlier. It is the response part that I am unsure of. Any suggestions on what I could do?