Problem z curl

Odpowiedz Nowy wątek
2011-08-18 12:36
0

Witajcie. Pragnę przesłać wartość zmiennych z mojej aplikacji:

oldV1 = readString(processHandle, var1_value); // odczytanie danych z pamieci procesu
oldV2 = readString(processHandle, var2_value);

do skryptu php. Korzystam więc z takiego kodu:

CURL *curl;
CURLcode res;
 
    curl = curl_easy_init();
    if(curl)
    {
        /* First set the URL that is about to receive our POST. This URL can
       just as well be a https:// URL if that is what should receive the
       data. */
        curl_easy_setopt(curl, CURLOPT_URL, "http://127.0.0.1/proj/index.php");
        /* Now specify the POST data */
        curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "var1=tutajchcedanezezmiennej&var2=tutaksamo");
 
        /* Perform the request, res will get the return code */
        res = curl_easy_perform(curl);
 
        /* always cleanup */
        curl_easy_cleanup(curl);
    }

Próbowałem zrobić tak:

CURL *curl;
CURLcode res;
 
    curl = curl_easy_init();
    if(curl)
    {
        /* First set the URL that is about to receive our POST. This URL can
       just as well be a https:// URL if that is what should receive the
       data. */
        curl_easy_setopt(curl, CURLOPT_URL, "http://127.0.0.1/proj/index.php");
        /* Now specify the POST data */
        curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "var1="+oldV1+"&var2="+oldV2+"");
 
        /* Perform the request, res will get the return code */
        res = curl_easy_perform(curl);
 
        /* always cleanup */
        curl_easy_cleanup(curl);
    }

jednak to nie działa. Moje pytanie: jak za pomocą tego kodu mogę przesłać te zmienne do skryptu php? Z góry dziękuję za pomoc.

Popraw nazwę tematu na bardziej opisującą problem, albo kosz.. - lofix 2011-08-18 16:18

Pozostało 580 znaków

2011-08-18 12:39
Kumashiro
0

Co to znaczy "nie działa"? Nie kompiluje się? Wywraca się runtime? Nic nie wysyła? Wysyła, ale nie ma body w POST? Wyłącza się komputer przy próbie wysłania?

"Panie doktorze, jestem chory. Co mi dolega?"

Pozostało 580 znaków

2011-08-18 12:59
0

Racja, moja nieuwaga, zapomniałem napisać, że skrypt php wygląda tak:

if(isset($_POST['var1'])) {
 
$var1 = htmlspecialchars(addslashes($_POST['var1']));
 
$var2 = htmlspecialchars(addslashes($_POST['var2']));
 
$fname = 'test.txt';
 
$handle = fopen($fname, "a");
 
fwrite($handle, $var1." | ".$var2." |END|   ");
 
fclose($handle);
} else {
$fnameD = 'dupa.txt';
 
$handleD = fopen($fnameD, "a");
 
fwrite($handleD, "dupa");
 
fclose($handleD);
}

zarówno do dupa.txt jaki i test.txt nic się nie dodaje.

Dodam, że gdy w kodzie C++ nie zastosuję metody

"postname="+zmienna+"&postname2="+zmienna2+""

tylko wpiszę jakąkolwiek wartość: "postname=test&postname2=innytest"


, to skrypt php normalnie zapisuje $var1 oraz $var2 w pliku .txt.
edytowany 1x, ostatnio: Alegres, 2011-08-18 12:59

Pozostało 580 znaków

2011-08-18 13:06
Kumashiro
0
Alegres napisał(a)

Dodam, że gdy w kodzie C++ nie zastosuję metody

"postname="+zmienna+"&postname2="+zmienna2+""

Jakim cudem Ci się to kompiluje? Konkatenujesz char* operatorem "+"? Powinno Ci się conajmniej wywrócić z błędem segmentacji.
cstringów tak nie łączymy.

Pozostało 580 znaków

2011-08-18 13:14
0

Nie mam pojęcia ja kto powinno wyglądać, żeby było dobrze. Te "+" to przyzwyczajenie z innego języka widocznie. Kompiluje się jakoś, nie mam pojęcia jakim cudem, ale za to chciałbym wiedzieć jak powinno się łączyć cstringi =).

Krótko mówiąc, jak to powinno poprawnie wyglądać?

Pozostało 580 znaków

2011-08-18 13:19
0

funkcja readString:

const char* readString(HANDLE procHandle, DWORD lpBaseAddress)

zmienne var1 oraz var2 na pewno nie są puste.

edytowany 1x, ostatnio: Alegres, 2011-08-18 13:19

Pozostało 580 znaków

2011-08-18 13:21
Kumashiro
0

To, co Ty robisz to jest algebra na wskaźnikach i do funkcji w rezultacie przekazujesz coś, co wskazuje "w kosmos".
Poczytaj o funkcjach np. strcat(), sprintf(), strncpy(), czy nawet memcpy().

Pozostało 580 znaków

2011-08-18 14:50
0

Taką samą metodą przekazywałem wartości var1 oraz var2, również przez curla, tylko metodą get, gdzie funkcja łączyła się bezpośrednio z: http://127.0.0.1/proj/index.php?nazwa=wartosc i wszystko dzialalo POMIMO TEGO iż w kodzie C++ wyglądało to dokładnie tak samo jak robię teraz, czyli:

"http://127.0.0.1/proj/index.php?nazwa="+var1+"&nazwa2="+var2+""
edytowany 1x, ostatnio: Alegres, 2011-08-18 14:51

Pozostało 580 znaków

2011-08-18 15:06
Kumashiro
0

Nie wiem jakim cudem Ci to działało. U mnie się nawet nie chce kompilować przy takim łączeniu. Jesteś pewien, że to było C++ a nie Java?
Anyway, możesz się ze mną spierać czy operator "+" tu powinien działać czy nie, albo zbudować cstringa przy pomocy funkcji, które Ci podałem i uruchomić program. Twój wybór.
Jeśli piszesz w C++, to możesz sobie ułatwić sprawę budując łańcuch na std::string. Ja Ci nie jestem w stanie pomóc, gdyż najwyraźniej używasz jakichś dziwnych narzędzi.

Pozostało 580 znaków

2011-08-18 15:58
0

spróbuj tak: (string("var1=")+"sfsdf"+"sdfsdsds"+...).c_str()


░█░█░█░█░█░█░█░█░█░█░█░

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0