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 compilationlg
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