Go Down

Topic: [EtherCard] Envoyer une requete POST (Read 7857 times) previous topic - next topic

infobarquee

pourquoi tu n'as pas mis
Quote
stash.print("&action=Submit");


tu as essayé la lib indiquée en bas de page?
https://github.com/ntruchsess/arduino_uip
AUCUNE AIDE PAR MP

timiti29

#31
Oct 29, 2013, 05:28 pm Last Edit: Oct 29, 2013, 06:22 pm by timiti29 Reason: 1
Bonjour, je ne l'ai pas mis pour ne pas alourdir le code et car je n'ai pas besoin de passer une deuxième variable.

mon script php ne recupère qu'une seule variable "id".

ce code permet d'envoyer une variable action, il marche, je l'ai tester mais juste pour unr raison d'inutilité.

Merci.
Timiti29

Edit : J'ai essayé la librairie UIPEthernet, sa marche mais il y a un point négatif important, je n'est pas trouvé comment changer la pin cable select, je n'ai pas de parrametre dans le begin.
voici mon code :
Code: [Select]
/*
* UIPEthernet TcpClient example.
*
* UIPEthernet is a TCP/IP stack that can be used with a enc28j60 based
* Ethernet-shield.
*
* UIPEthernet uses the fine uIP stack by Adam Dunkels <adam@sics.se>
*
*      -----------------
*
* This TcpClient example gets its local ip-address via dhcp and sets
* up a tcp socket-connection to 192.168.0.1 port 5000 every 5 Seconds.
* After sending a message it waits for a response. After receiving the
* response the client disconnects and tries to reconnect after 5 seconds.
*
* Copyright (C) 2013 by Norbert Truchsess <norbert.truchsess@t-online.de>
*/

#include <UIPEthernet.h>

EthernetClient client;
signed long next;

void setup() {

  Serial.begin(57600);
  uint8_t mac[6] = {0xDD,0xDD,0xDD,0x00,0x00,0x01};
  Ethernet.begin(mac);

  Serial.print("localIP: ");
  Serial.println(Ethernet.localIP());
  Serial.print("subnetMask: ");
  Serial.println(Ethernet.subnetMask());
  Serial.print("gatewayIP: ");
  Serial.println(Ethernet.gatewayIP());
  Serial.print("dnsServerIP: ");
  Serial.println(Ethernet.dnsServerIP());

  next = 0;
}

void loop() {

  if (((signed long)(millis() - next)) > 0)
    {
      next = millis() + 5000;
      Serial.println("Client connect");
      // replace hostname with name of machine running tcpserver.pl
//      if (client.connect("server.local",5000))
      if (client.connect(IPAddress(192,168,100,22),80))
        {
          Serial.println("Client connected");

          client.println("POST /test/index2.php HTTP/1.0");
          client.println("Host: 192.168.100.100");
          client.println("Content-type: application/x-www-form-urlencoded");
          client.println("Content-Length: 8");
          client.println("");
          client.println("id=45678");
          while(client.available()==0)
            {
              if (next - millis() < 0)
                goto close;
            }
          int size;
          while((size = client.available()) > 0)
            {
              uint8_t* msg = (uint8_t*)malloc(size);
              size = client.read(msg,size);
              Serial.write(msg,size);
              free(msg);
            }
close:
          //disconnect client
          Serial.println("Client disconnect");
          client.stop();
        }
      else
        Serial.println("Client connect failed");
    }
}

timiti29

#32
Nov 01, 2013, 08:48 am Last Edit: Nov 01, 2013, 02:16 pm by timiti29 Reason: 1
J'ai trouvé l'erreur !

La fonction httpPost demande une adresse du pointeur du tableau postval
(const char *postval)

ors je créait un tableau de char et je lui envoyait le tableau et non pas l'adresse.
(const char postval[] = "id=422")

j'ai juste eu à modifier cette ligne.

Je poste mon code pour ceux qui serait intérésé :
Code: [Select]
#include <EtherCard.h>

static byte mymac[] = {0xDD,0xDD,0xDD,0x00,0x00,0x01};
char website[] PROGMEM = "192.168.1.22";

boolean x = true;

byte Ethernet::buffer[700];
static uint32_t timer;
/*
static void response_callback(byte status, word off, word len) {
 
  Serial.print((const char*) Ethernet::buffer + off + 207);
}*/
static void my_callback(byte status, word off, word len) {
  Serial.println(">>>");
  Ethernet::buffer[off+300] = 0;
  Serial.print((const char*) Ethernet::buffer + off);
  Serial.println("...");
}

void setup () {

  Serial.begin(57600);
  Serial.println("Client Demo");
  Serial.println();

  if (!ether.begin(sizeof Ethernet::buffer, mymac, 10))
    Serial.println( "Failed to access Ethernet controller");
else
   Serial.println("Ethernet controller initialized");
Serial.println();

  if (!ether.dhcpSetup())
    Serial.println("Failed to get configuration from DHCP");
  else
    Serial.println("DHCP configuration done");

  ether.printIp("IP Address:\t", ether.myip);
  ether.printIp("Netmask:\t", ether.mymask);
  ether.printIp("Gateway:\t", ether.gwip);
  Serial.println();
 
  ether.hisip[0] = 192;
  ether.hisip[1] = 168;
  ether.hisip[2] = 1;
  ether.hisip[3] = 22;
  ether.printIp("SRV IP:\t", ether.hisip);
  Serial.println("Loop :");
  delay(1000);
}

void loop() {

  ether.packetLoop(ether.packetReceive());
 
  if ((millis() > timer) && x == true) {
    timer = millis() + 5000;
    const char *postval = "id=422";
    //ether.browseUrl(PSTR("/test/index2.php"), "?id=422", website, my_callback);
    ether.httpPost(PSTR("test/index2.php"), website, NULL, postval, my_callback);
    x = false;
  }
}

Merci encore à toute les poersonnes qui on participé à ce topic.
Timiti29

infobarquee

AUCUNE AIDE PAR MP

Go Up