Ubuntun käyttö > Ohjelmointi, palvelimet ja muu edistyneempi käyttö

[ ratkaistu ] cpp-httplib ja tavallisen http muuttujan päivitys

(1/3) > >>

teele:
Hieaman aikaisemmin olevassa säikeessä on cpp-httblibin käyttö https muuttujan päivittämisessä, ja se toimii hienosti.

Jos suunnilleen samanlaista koodia voisi käyttää myös tavallisen http muuttujan päivittämiseen, asiat tulisivat aika yksinkertaiseksi. Netistä ei ole toistaiseksi löytynyt kuin yksi asiaa koskeva ohje eikä sekään näytä toimivan.

Tällaista on kokeiltu tavallisen http muttujan päivitykseen


--- Koodia: ---#include <iostream>
#define CPPHTTPLIB_OPENSSL_SUPPORT
#include  "/home/oma/Documents/my_httplib/cpp-httplib-master/httplib.h"

int main(void)
{
/*
  const char *cert_dir = getenv(X509_get_default_cert_dir_env());

  if (!cert_dir) cert_dir = X509_get_default_cert_dir();

  std::string cert_path = cert_dir;
  cert_path += "/ca-certificates.crt";
  std::cout << "SSL certificate path: " << cert_path << std::endl;

  httplib::SSLClient cli("nule.dy.fi", 443);
  cli.set_ca_cert_path(cert_path.c_str());
  cli.enable_server_certificate_verification(true);
*/

  httplib::SSLClient cli("nule.dy.fi", 80);

  httplib::Params params;
  //params.emplace("x", "1234 ");
  //params.emplace("y", "3333");

  //auto res = cli.Post("/testihakemisto/sf02.php", params);
  auto res = cli.Post("/testihakemisto/sf02.php", "x=50511", "application/x-www-form-urlencoded");

  if(res)
  {
    std::cout << "Status: " << res->status << std::endl;
  }
  else
  {
    std::cout << "POST failed" << std::endl;
  }

}

--- Koodi päättyy ---

Ohjelma kääntyy, mutta päättyy ilmoitukseen  POST failed, koska cli.Post ei onnistu.

cli.Post -kutsumuoto on täältä

https://stackoverflow.com/questions/52274981/post-request-with-cpp-httplib

Ohjelmasta on siis vain jätetty salausasiat pois ja vaihdettu portti 80 :ksi verrattuna hyvin toimivaan https-versioon.

Mitä korjauksia pitäisi tehdä?


Tomin:
Ongelma lienee tässä:

--- Lainaus käyttäjältä: teele - 23.03.20 - klo:20.45 ---
--- Koodia: ---  httplib::SSLClient cli("nule.dy.fi", 80);

--- Koodi päättyy ---

--- Lainaus päättyy ---

Älä käytä SSLClient-luokkaa, jos et käytä SSL:ää. Oikea luokka on varmaankin httplib::Client.

teele:
Luokka vaihdettu, mutta vielä pitäisi selvittää virhekoodi 500, ks. seuraavat kommentit

_Pete_:
Mikä tarkalleen ottaen on http-muuttuja?

teele:
Taisin iloita liian aikaisin, en huomannut, että paluukoodin 200 sijasta tulikin paluukoodi 500 ja php-muutujan arvo ei muuttunutkaan.

Ohjelma kääntyy hyvin ilman mitään ilmoituksia. Domaini toimii selaimella katsottaessa. Valitettavasti virhe 500 palvelimelta näyttää olevan yleisvirhe eli virhenumeron perusteella ei ole saatavissa lisätietoa.

cli.Post -kutsumuoto on kopioitu täältä

https://stackoverflow.com/questions/52274981/post-request-with-cpp-httplib

http-muuttuja on huona kieltä. Tässä sillä tarkoitettiin http-muotoisella pyynnöllä palvelinscriptille lähetettyä käskyä muuttaa muuttujan x arvoa php-sivulla. Asia liittyi hieman aikaisemman keskustelusäikeen kysymykseen, jossa tietoa palvelimelle välitettiin salatussa https-muodossa.

Mutta kysymys on tosiaan vielä auki, eikä virhekoodista 500 ole vielä ollut paljon apua.

Koko ohjelma on tässä


--- Koodia: ---#include <iostream>
#define CPPHTTPLIB_OPENSSL_SUPPORT
#include  "/home/oma/Documents/my_httplib/cpp-httplib-master/httplib.h"

int main(void)
{

  httplib::Client cli("omadomaini1.dy.fi", 80);

  httplib::Params params;
  auto res = cli.Post("/testihakemisto/sf02.php", "x=123456 78", "application/x-www-form-urlencoded");

  if(res)
  {
    std::cout << "Status: " << res->status << std::endl;
  }
  else
  {
    std::cout << "POST failed" << std::endl;
  }

}

--- Koodi päättyy ---




Navigaatio

[0] Viestien etusivu

[#] Seuraava sivu

Siirry pois tekstitilasta