Hallo,
ich bin gerade an einem CGI-Skript in C++ zu Programmieren, welches XML Daten empfängt und verarbeiten soll, ebenso dann wieder XML-Daten an das Programm zurückliefert.
Ich habe jedoch nun ein Problem und entweder stehe ich aufm Schlauch oder ähnliches vielleicht könnt Ihr mir helfen. Ich habe als erstes mal die libxml2 Bibliothek verwendet, kompilieren
funktioniert auch ohne Probleme, wenn ich das Skript jedoch aufrufe stürzt es ab.
Alles anzeigen
ich bin gerade an einem CGI-Skript in C++ zu Programmieren, welches XML Daten empfängt und verarbeiten soll, ebenso dann wieder XML-Daten an das Programm zurückliefert.
Ich habe jedoch nun ein Problem und entweder stehe ich aufm Schlauch oder ähnliches vielleicht könnt Ihr mir helfen. Ich habe als erstes mal die libxml2 Bibliothek verwendet, kompilieren
funktioniert auch ohne Probleme, wenn ich das Skript jedoch aufrufe stürzt es ab.
Quellcode
- #include <stdio.h>
- #include <stdlib.h>
- #include "URLEncode.h"
- #include "URLDecode.h"
- #include "libxml/parser.h"
- //Namespaces einstellen
- using namespace std;
- using std::ofstream;
- //Mainprogramm
- void main(){
- string eingabe, ausgabe;
- char buffer[10];
- bool login = false;
- cin >> eingabe;
- eingabe = URLDecode(eingabe); //convertiert den URL String in einen lesbaren String um
- xmlDocPtr xmlinsert = xmlReadDoc((xmlChar *)eingabe.c_str(),NULL,NULL,XML_PARSE_DTDVALID);
- ofstream fout( "login.log", ios::app );
- _strdate_s(buffer);
- fout << buffer << " ";
- _strtime_s(buffer);
- fout << buffer << " -";
- fout << " Loginanfrage gestartet von (HOST) :" << endl;
- if (xmlinsert == NULL)
- {
- _strdate_s(buffer);
- fout << buffer << " ";
- _strtime_s(buffer);
- fout << buffer << " -";
- fout << " XML Stream konnte nicht geladen werden" << endl;
- login = false;
- }else
- {
- xmlFreeDoc(xmlinsert);
- login = true;
- }
- if (login == true)
- {
- ausgabe = "<?xml version=\"1.0\" ?>\n";
- ausgabe += "<!DOCTYPE LOGIN SYSTEM \"http://srv-gst-05:8080/emis.dtd\">\n";
- ausgabe += "<LOGIN>\n";
- ausgabe += "<USER>user</USER>\n";
- ausgabe += "<SID>34lkwe49fkfgklwegi4w5ewrjk3rter</SID>\n";
- ausgabe += "<TIMEOUT>300</TIMEOUT>\n";
- ausgabe += "</LOGIN>\n";
- }else {
- ausgabe = "<?xml version=\"1.0\" ?>\n";
- ausgabe += "<!DOCTYPE ERROR SYSTEM \"http://srv-gst-05:8080/emis.dtd\">\n";
- ausgabe += "<ERROR>\n";
- ausgabe += "<ID>2001</ID>\n";
- ausgabe += "<DESCRIPTION>Unknown Server request send by client.</DESCRIPTION>\n";
- ausgabe += "</ERROR>\n";
- }
- ausgabe = URLEncode(ausgabe);
- cout << "Content-type: application/xml" << endl;
- cout << endl;
- cout << ausgabe << endl; // Die Daten werden zurueck gegeben
- }