Datenübergabe an Webserver - Frage zur FAQ



  • Dieser FAQ-Artikel: http://www.c-plusplus.net/forum/viewtopic-var-t-is-55235.html

    hilft mir nicht besonderlich weiter. Ich wollte die Funktion in einer meiner Dialogbasierenden Anwendung verwenden. Also schreib ich die FUnktion in die HauptDlg-Klase. Allerdings erhalte ich da 18 Fehlermeldungen.

    Es wäre doch toll zu wissen, wo man diese Funktion hinschreiben muss, was noch gemacht werden muss damits funzt und welche headers (.h-Files) noch includiert werden müssten??

    Grüsse
    Wolf



  • ein blick in die MSDN nach den folgenden Klassen(CInternetSession, CInternetFile, CInternetException, CHttpConnection, CHttpFile) hätte dir die lösung gegeben, alle benötigen die afxinet.h

    und wohin du die funktion schreiben must, kann dir keiner beantworten, da nur du weist wie deine klassen gestaffelt sind und wo du die entsprechende funktion benötigst.



  • OK danke, alles klar hab ich gemacht.
    ALso gemäss dem Code in der FAQ (man findet des auch in der MSDN) hab ich paar Fragen:

    1. Servername hab ich jetzt www.nfws.ch angegeben.
    2. FormActionHere hab ich test.php reingeschrieben.

    Und oben bei name=John etc hab ich nichts! nur "", da ich ja zur Zeit keine Option möchte. Die PHP-Datei, die aufgerufen werden sollte lautet: http://www.nfws.ch/test.php

    In dieser Datei steht lediglich

    <?php
    echo 'ES hat geklappt';
    ?>

    Aber wo wird dann diese Rückvariable gespeichert?? Heisst das hier strFormData? nehme ich StrFormdata (von der Formel) also mach dann: lbcr.AddString(strFormData) erhalte ich einfach ein leeres Feld anstatt den text "Es hat geklappt".

    Why?

    Habe im Internet noch folgende Möglichkeit gefunden:

    CString inetResult = "";
        char	        buff[512];
        HINTERNET hInet = InternetOpen(L"MyInetConn", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0 );
        CString httpCall = "http://www.nfws.ch/test.php";
        HINTERNET hFile = InternetOpenUrl(hInet, httpCall, NULL, 0, INTERNET_FLAG_KEEP_CONNECTION| INTERNET_FLAG_PRAGMA_NOCACHE | INTERNET_FLAG_RELOAD, 0 );
        if( hFIle != INVALID_HANDLE_VALUE ) {
            while( InternetReadFile(hFile, buff, 511, &charsRead ) && charsRead > 0) {
                buff[charsRead] = '\0';
                inetResult += buff;
            }
            InternetCloseHandle(hFile);
            // In der Variablen inetResult hast du nun den gesamten HTTP-Response drin,
            // Wie du den parst weisst du hoffentlich ;-)
        }
        InternetCloseHandle(hInet);
    
    	lbrc.AddString(inetResult);
    

    Allerdings bereitet mir obiger Code folgende Fehlermeldungen:

    1>c:\users\kurz dominic\documents\visual studio 2008\projects\testprogramm\testprogramm\hauptdlg.cpp(129) : error C2664: 'InternetOpenA' : cannot convert parameter 1 from 'const wchar_t [11]' to 'LPCSTR'
    1> Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
    1>c:\users\kurz dominic\documents\visual studio 2008\projects\testprogramm\testprogramm\hauptdlg.cpp(132) : error C2065: 'hFIle' : undeclared identifier
    1>c:\users\kurz dominic\documents\visual studio 2008\projects\testprogramm\testprogramm\hauptdlg.cpp(133) : error C2065: 'charsRead' : undeclared identifier
    1>c:\users\kurz dominic\documents\visual studio 2008\projects\testprogramm\testprogramm\hauptdlg.cpp(133) : error C2065: 'charsRead' : undeclared identifier
    1>c:\users\kurz dominic\documents\visual studio 2008\projects\testprogramm\testprogramm\hauptdlg.cpp(133) : fatal error C1903: unable to recover from previous error(s); stopping compilation

    lg
    WOlf



  • Mit InternetReadFile() liesst du doch die Datei direkt, ich glaube nicht das es dein ziel ist die zu bekommen. Du solltest deine Anwendung eher als Browser nur eben ohne Seitenausgabe schreiben und die Antwort auswerten. Das wird dich eher zum Ziel bringen.



  • Hopla 🙂 JA das hast Du wohl recht.. *g* - NAja werd ich mich mal in der MSDN betreffend der HTTP-Browser Funktionen schlau machen... thx


Anmelden zum Antworten