Hinweise zum neuen Forum
Zur Homepage des Deutschsprachige Xbase-Entwickler e. V.
Xbase++-Wiki des Deutschsprachige Xbase-Entwickler e. V.

xb2net - frage

Xb2.Net von Boris Borzic

Moderator: Moderatoren

Antworten
kallecux
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 104
Registriert: Do, 02. Feb 2006 0:19

xb2net - frage

Beitrag von kallecux » Mi, 20. Dez 2006 21:36

Hallo Zusammen!

Ich habe es geschafft, eine Datenübertragung und Abholung mit xb2.net zu realsieren. Hurra! Nun habe ich ein SSL Projekt und verstehe den Zusammenhang nicht. Ich habe schon etliche Stunden probiert und getestet, aber ohne Erfolg.

Ich arbeite auf Basis einer Schnittstellenbeschreibung und finde nicht den korrekten Ansatz dies mit xb2.net zu realsieren. Ich erlaube mir einen Auszug aus der Doku reinzustellen und zu bitten mir einen kleinen Tipp zu geben:

"Bei diesem Kommunikationsszenario sendet der Client eine Datenlieferung im XML-Format DatML/RAW an den gemeinsamen Dateneingang. Bei erfolgreicher Übermittlung erhält der Client
einen vom gemeinsamen Dateneingang erstellten Eingangsstempel zurück, der die Datenlieferung eindeutig identifiziert und für den späteren Zugriff auf das zugehörige Prüfprotokoll dient.

4.1 Anfrage
Eine Anfrage zum Versand einer Datenlieferung an den gemeinsamen Dateneingang muss die folgenden multipart/form-data-Teile enthalten:
Field Content-Type Charset Content-Transfer- Encoding Beispiel
kennung text/plain US-ASCII 8bit BSP1000
passwort text/plain US-ASCII 8bit geheim
aktion text/plain US-ASCII 8bit daten_senden
daten;filename=<name> text/xml <charset> binary, deflate, gzip <XML-Dokument>
Die Felder kennung und passwort enthalten die Benutzerkennung und das Passwort für die Authentifizierung beim gemeinsamen Dateneingang. Bei beiden Angaben ist die Groß- und Kleinschreibung zu beachten. Beide Felder müssen angegeben werden und dürfen nicht leer sein.
Das Feld aktion muss angegeben werden und für diese Nachrichtenart den Wert daten_senden enthalten.
Das Feld daten muss angegeben werden und enthält die Datenlieferung in Form eines DatML/RAWDokuments mit einem beliebig wählbaren Dateinamen in dem Feldattribut filename. Der Inhaltstyp
für dieses Feld kann eine Angabe zum verwendeten Zeichensatz enthalten, z.B. UTF8 oder ISO-8859-1. Wenn diese Angabe fehlt, dann wird als Zeichensatz UTF8 angenommen. Der angegebene
Zeichensatz sollte mit dem in der XML-Deklaration des DatML/RAW-Dokuments angegebenen übereinstimmen. Das in der Datenlieferung enthaltene DatML/RAW-Dokument wird einer Prüfung gegen das zugehörige XML-Schema von DatML/RAW unterzogen.
Die Datenlieferung kann unkomprimiert oder komprimiert übertragen werden. Im ersten Fall ist im Content-Transfer-Encoding für das Feld daten der Wert binary anzugeben. Für die komprimierte Übertragung werden die Verfahren DEFLATE (s. [DEFL]) und GZIP (s. [GZIP]) unterstützt. Das Feld daten enthält dann die komprimierte Datenlieferung und im Content-Transfer-Encoding ist das dabei verwendete Verfahren anzugeben, also einer der beiden Werte deflate oder gzip. Die
Größe einer Datenlieferung darf unkomprimiert maximal 4 MByte betragen und komprimiert maximal 400 KByte."

Ich möchte nicht den Anschein erwecken, dass mir jemand das passende Programm schreibt. Ich bin auf der Suche nach dem entscheidenden Hinweis wie eine multipart/form-data Übertragung in xb2.net abzubilden ist. Per xbForm oder per Payload. Habe beides ausprobiert, bei xbForm bekomme ich den Upload des Felder daten;filename=<name> nicht hin.

Danke im voraus und sorry wegen des vielen Textes.....

Karl Heinz Hammelrath
Beste Grüße

Karl Heinz

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 13588
Registriert: Mo, 23. Jan 2006 21:54
Wohnort: Germersheim
Kontaktdaten:

Beitrag von brandelh » Mi, 20. Dez 2006 22:39

Hi,

es gibt meines Wissens eine XB2.NET Version für SSL verschlüsselte Seiten (HTTPS). Wahrscheinlich kümmert sich diese um den ganzen Schlüsselaustausch. Sieh mal auf deren Homepage nach den Preisen.

Ich selbst nutze kein XB2.NET, sondern einen Apache Webserver in Verbindung mit CGI Programmen. Meine Programme müssen sich um die Verschlüsselung nicht kümmern, aber der Apache Webserver muss die SSL Verschlüsselung enthalten und auch aktiviert bekommen.
Gruß
Hubert

kallecux
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 104
Registriert: Do, 02. Feb 2006 0:19

Beitrag von kallecux » Mi, 20. Dez 2006 22:46

Sorry, das ich es nicht erwähnt habe. Ich habe eine SSL-Version der XB2NET. Das Problem liegt woanders.

Gruß
Karl Heinz
Beste Grüße

Karl Heinz

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 13588
Registriert: Mo, 23. Jan 2006 21:54
Wohnort: Germersheim
Kontaktdaten:

Beitrag von brandelh » Mi, 20. Dez 2006 23:07

Ok,

dann braucht man natürlich noch ein Server-Zertifikat, ich habe meines selbst erstellt (ging recht mühsam im Apache), das geht natürlich für Geschäftsanwendungen nicht.

Vermutlich wirst du da mal Boris anhauen müssen, meines Wissens hat hier keiner eine SSL Version.
Gruß
Hubert

kallecux
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 104
Registriert: Do, 02. Feb 2006 0:19

Beitrag von kallecux » Mi, 20. Dez 2006 23:14

Danke für die Tipps - es ist definitiv kein Zertifikatsproblem - der Login haut ja hin - ich habs auch im XB2NET Forum eingetragen - allerdings auf broken english ;-)

Karl Heinz
Beste Grüße

Karl Heinz

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 13588
Registriert: Mo, 23. Jan 2006 21:54
Wohnort: Germersheim
Kontaktdaten:

Beitrag von brandelh » Mi, 20. Dez 2006 23:27

Hallo,

sorry ich habe nur Erfahrungen mit der Weiterverarbeitung in CGI Programmen und dort kommen bei POST alle Daten in STDIN an,
wobei man zwischen normal und multipart unterscheiden muss.

Wenn dies (multi part) etwa in dem Datenformat ankommt, dann musst du die Felder nur noch heraushacken:

Code: Alles auswählen

-----------------------------41184676334 
Content-Disposition: form-data; name="vorname" 

Egon
-----------------------------41184676334 
Content-Disposition: form-data; name="name" 

Tester 
-----------------------------41184676334 
Content-Disposition: form-data; name="strasse" 

Hansaweg 5 
-----------------------------41184676334 
Content-Disposition: form-data; name="plz" 


-----------------------------41184676334 
Content-Disposition: form-data; name="ort" 



-----------------------------41184676334 
Content-Disposition: form-data; name="FileSend"; filename="test.zip" Content-Type: application/octet-stream 

....
-----------------------------41184676334 
Content-Disposition: form-data; name="SendData" Senden -----------------------------41184676334--
Gruß
Hubert

kallecux
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 104
Registriert: Do, 02. Feb 2006 0:19

Beitrag von kallecux » Mi, 20. Dez 2006 23:33

..und ich bin auf der Suche, wie ich die Daten richtig mit xb2net abschicke....xbForm..oder...payload..oder.oder.oder

Karl Heinz
Beste Grüße

Karl Heinz

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 13588
Registriert: Mo, 23. Jan 2006 21:54
Wohnort: Germersheim
Kontaktdaten:

Beitrag von brandelh » Mi, 20. Dez 2006 23:42

Meinst du jetzt wie XB2.NET das Erfassungformular absenden soll ?

Eine Erfassungsmaske in HTML muss für Multipart etwa so aussehen:

Code: Alles auswählen

<FORM enctype="multipart/form-data" action="/cgi-bin/ShowInfo.exe" method=post>
<P>
<TABLE>
  <TBODY>
  <TR>
    <TD>Vorname:</TD>
    <TD><INPUT id=vorname name=vorname></TD></TR>
  ...
  <TR>
    <TD>Datei-Upload:</TD>
    <TD><INPUT id=FileSend name=FileSend type='file' size='40' accept='application/zip' maxlength='2097152' ></TD>
  </TR>
  </TBODY>
</TABLE>
</P>
<P><INPUT type=submit value=Senden name=SendData> dieser Button &uuml;bergibt eine Variable</P>
</FORM>
und dieses muss der Server an den Browser senden, damit der die Eingaben machen kann. Zu beachten ist hier besonders <FORM enctype="multipart/form-data"
Gruß
Hubert

kallecux
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 104
Registriert: Do, 02. Feb 2006 0:19

Beitrag von kallecux » Mi, 20. Dez 2006 23:48

...ich kämpfe auf der Client-Seite....den Server gibt es, ich muss Daten dorhin schicken....siehe meinen Eingangstext.

Karl Heinz
Beste Grüße

Karl Heinz

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 13588
Registriert: Mo, 23. Jan 2006 21:54
Wohnort: Germersheim
Kontaktdaten:

Beitrag von brandelh » Do, 21. Dez 2006 0:25

Hi,

dann must du also die HTML Seite erstellen, die ein User mit Browser per Hand ausfüllen würde.
Wenn du diese vorliegen hast, kopiere den Quellcode und speichere diesen.
Wenn nicht, müssten die Felder laut deiner Beschreibung vermute ich mal so aussehen (der Passwort-Typ kann auch als Text notwendig sein ?):

Code: Alles auswählen

<body>
<FORM enctype="multipart/form-data" action="... Server CGI-Programm ..." method=post> 
<INPUT type='text' name='kennung' value='BSP1000'>
<INPUT type='password' name='passwort' value='geheim'>
<INPUT type='submit' value='aktion' name='daten_senden'>
<input type='file' name='ZIP-FileName' accept='application/zip'>
</FORM
</body>
Dieses als HTM abspeichern und im Browser aufrufen. Was als CGI-Serverprogrogramm rein muss, weiß ich jetzt nicht.
Für ZIP-FileName muss natürlich der ZIP Name eingetragen werden. Nach meinen Erfahrungen hat man mit ZIP am wenigsten Ärger, da keine Textkonvertierungen durchgeführt werden und eine CRC Prüfung beim Entpacken durchgeführt wird.
Gruß
Hubert

kallecux
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 104
Registriert: Do, 02. Feb 2006 0:19

Beitrag von kallecux » Do, 21. Dez 2006 20:37

Ich bins wieder - habe die Anfrage an Boris geschickt - hier seine Antwort:

> What is the right way to transfer per multipart/form-data? xbForm or
> Payload?

Neither of these classes are used for multipart/form-data. You will need to
implement this yourself (it's not difficult). Here's some links that may be
usefull:

http://www.ietf.org/rfc/rfc2388.txt
http://www.ietf.org/rfc/rfc1867.txt
http://www.ietf.org/rfc/rfc1521.txt

Best regards,
Boris Borzic

Hast Du (oder jemand anderes) schonmal sowas gemacht?

Karl Heinz
Beste Grüße

Karl Heinz

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 13588
Registriert: Mo, 23. Jan 2006 21:54
Wohnort: Germersheim
Kontaktdaten:

Beitrag von brandelh » Do, 21. Dez 2006 22:44

Hi,

wie ich schon geschrieben habe,

wenn dein Problem auf dem WEB-PC ist, erstelle eine HTML Datei, die die Felder und FORM Vorschriften wie oben dargestellt enthält.

Auf dem Server erledigt bei mir die Übersetzung der Apache, der auch mit dem Browser die Zertifikate gegenseitig austauscht. Von diesem erhalte ich den ----------.... Datensatz im STDIN, wenn die Daten bei dir dort ankommen, musst du sie nur noch zerlegen.

Da kommt mir ein Verdacht ;-)

willst du überhaupt die Daten AN ein XB2.NET Serverprogramm senden, oder willst du die Daten AN einen anderen WEB-Server senden ?
Im letzteren Fall, musst du eine Funktion haben, die HTML Code AN einen Server sendet. Auf Phil's Seite (Adresse unter LINKS...) gibt es LoadFromURL(), diese kann eine Websiete laden, dann kannst du sie Ausfüllen und an den Webserver senden.
Gruß
Hubert

kallecux
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 104
Registriert: Do, 02. Feb 2006 0:19

Beitrag von kallecux » Fr, 22. Dez 2006 19:37

Hallo Hubert,

ich will nicht an einen XB2NET-Server etwas schicken. Es ist der Server des statistischen Bundesamtes. Der will Daten in der Form: multipart/form-data haben.

Ich habe diverse RFC-Dokumente gelesen und glaube kurz vor dem Ziel zu sein.

Gem. Doku müsste es so klappen. Tut es aber nicht:

Dies ist der Inhalt von cXML:

--simple boundary
Content-Type: text/plain; charset=US-ASCII
Content-transfer-encoding: 8bit
Content-Disposition: form-data; name="kennung"

0000177380
--simple boundary
Content-Type: text/plain; charset=US-ASCII
Content-transfer-encoding: 8bit
Content-Disposition: form-data; name="passwort"

123123123
--simple boundary
Content-Type: text/plain; charset=US-ASCII
Content-transfer-encoding: 8bit
Content-Disposition: form-data; name="aktion"

daten_holen
--simple boundary
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: binary
Content-Disposition: form-data; name="daten;filename=xyz.xml"

<?xml version = "1.0" encoding = "iso-8859-1"?>
.........data data..... </nachricht>
</DatML-RAW-D>
--simple boundary--

und das ist der Code:

oHttp := xbHTTPClient():new()

aHeaders := {{"MIME-Version","1.0"},;
{"Accept-Charset", "ISO-8859-1, US-ASCII"},;
{"Content-type", 'multipart/form-data; boundary="simple
boundary"'}}

oResponse :=
oHttp:Execute("https://www-idev.destatis.de/idev/Onlin ... L,aHeaders)

Hast Du sowas schon mal verarbeitet?

Vorweihnachtliche Grüße

Karl Heinz Hammelrath
Beste Grüße

Karl Heinz

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 13588
Registriert: Mo, 23. Jan 2006 21:54
Wohnort: Germersheim
Kontaktdaten:

Beitrag von brandelh » Sa, 23. Dez 2006 0:48

Hallo Karlheinz,

ich erstelle Server-CGI Programme, welche mit HTML zuerst die Eingabeseite aufbauen, diese über den Server an den Browser senden, dort werden diese entweder vom Anwender im HTML Format ausgefüllt, oder aber mit LoadFromURL aus der ASINET automatisch ausgefüllt und zurückgesandt.

Hierbei brauche ich mich auf der Anwenderseite (Browser etc.) nie um den Aufbau kümmern, da ich zuerst mit einem LoadFromURL() Befehl die aktuelle HTML-Eingabeseite herunterlade (das entspricht dem Aufruf mit einem Browser), dann den String um die Daten erweitere und diesen mit LoadFromURL() per POST sende. Auf der Clientseite sehe ich dann immer nur HTML.

Kann man denn die Daten die du senden mußt auch per Hand ausfüllen ?
Wenn ja, speichere diese Eingabemaske als HTML Datei ab und schau sie dir an. Das Sendemodul (Asinet=LoadFromURL() oder Browser ) muss daraus dann das Sendeformat machen.
Gruß
Hubert

kallecux
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 104
Registriert: Do, 02. Feb 2006 0:19

Beitrag von kallecux » Sa, 23. Dez 2006 13:09

Hallo Hubert,

danke für Deine vielen Beiträge und Hilfestellungen. Nein, die Seite kann man nicht von Hand ausfüllen. Ich werde Anfang Januar Kontakt zum Betreiber aufnehmen und so versuchen die Sache zu klären.

Ich wünsche Dir und Deiner Familie ein gesegnetes Weihnachtsfest und falls wir uns nicht mehr "hören" einen guten Rutsch

Karl Heinz
Beste Grüße

Karl Heinz

kallecux
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 104
Registriert: Do, 02. Feb 2006 0:19

Beitrag von kallecux » Sa, 23. Dez 2006 13:12

Nachtrag:

Es handelt sich um die Seite:

https://www-idev.destatis.de/idev/OnlineMeldung

Ich gehe mal davon aus, dass man sie nicht runterladen kann.....

Karl Heinz
Beste Grüße

Karl Heinz

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast