LoadFromUrl() - Alaska-Version

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14655
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

LoadFromUrl() - Alaska-Version

Beitrag von Jan »

Kennt sich jemand damit aus? Also nicht das von Phil, sondern von Alaska.

Wenn ich eine URL per LoadFromUrl übergebe

Code: Alles auswählen

cRueckgabe := LoadFromUrl("http://user:kennwort@192.168.2.227:8080/search/?archive=BennoContainer&query=((Sender:'wer@auchimmer.de') AND (Recipient:weranderes@auchimmer.de))&filterQuery=(*)&limit=50000&full=(true)")
bekomme ich immer 404 zurück mit der Meldung "The requested URL /search/ was not found on this server". Gebe ich aber die URL

Code: Alles auswählen

http://user:kennwort@192.168.2.227:8080/search/?archive=BennoContainer&query=((Sender:'wer@auchimmer.de') AND (Recipient:weranderes@auchimmer.de))&filterQuery=(*)&limit=50000&full=(true)
direkt in den Browser ein, kommt das korrekte Ergebnis. Wo liegt da der Fehler? Lt. der Doku sollte der String eigentlich gehen.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: LoadFromUrl() - Alaska-Version

Beitrag von brandelh »

auf den ersten Blick bin ich zwar etwas erschrocken, aber es ist ein normaler GET Aufruf ... wenn ich auch sowas komplexes noch nie gemacht habe ...
Du solltest das ganze mal gegen einen eigenen Webserver laufen lassen und in der LOG nachsehen, was dort ankommt.
Oder Netzwerkprotokoll ansehen.
Gruß
Hubert
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2825
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 96 Mal
Danksagung erhalten: 13 Mal

Re: LoadFromUrl() - Alaska-Version

Beitrag von georg »

Hallo, Jan -


versuche mal, die Leerzeichen durch "+" zu ersetzen. Ich vermute, dass die den String "aufbrechen", während der Browser damit umgehen kann, indem er sie ersetzt.

Alternativ: bei FireFox den FireBug als AddOn installieren und mal anschauen, wie FireFox den String weitergibt (Persist, Net -> All und dann wohl Post) Danach die URL anklicken und mal anschauen.
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: LoadFromUrl() - Alaska-Version

Beitrag von brandelh »

das gibt der Browser weiter mit seinem GET Aufruf:

Code: Alles auswählen

GET /search/?archive=BennoContainer&query=((Sender:%27wer@auchimmer.de%27)%20AND%20(Recipient:weranderes@auchimmer.de))&filterQuery=(*)&limit=50000&full=(true)
' => %27
Blank => %20
also das ASCII Zeichen in HEX-Form

Ich habe einfach deine URL mit LOCALHOST an meinen lokalen Apache gesandt.
Zunächst fragte er ob ich auch ohne Kennwort weitergehen soll ...
Dann stand das in der LOG Datei:
127.0.0.1 - - [04/Aug/2014:20:11:51 +0200] "GET /search/?archive=BennoContainer&query=((Sender:%27wer@auchimmer.de%27)%20AND%20(Recipient:weranderes@auchimmer.de))&filterQuery=(*)&limit=50000&full=(true) HTTP/1.1" 404 320
:arrow: C:\Apache\logs\access.log
Gruß
Hubert
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14655
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: LoadFromUrl() - Alaska-Version

Beitrag von Jan »

Hallo Hubert,

das Ersetzen von " "->"%20" und "'"->"%27" hat leider keine Änderung gebracht. Er moniert immer noch per 404, das er die url "/search/" nicht finden könne.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Scarmo
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 188
Registriert: Di, 24. Jul 2007 9:17

Re: LoadFromUrl() - Alaska-Version

Beitrag von Scarmo »

Hallo Jan

Was passiert denn, wenn Du (testweise) gar keine Parameter mitgibst? Findet er dann die Adresse?

Also nur:
LoadFromUrl("http://user:kennwort@192.168.2.227:8080/search/")

Gruss
Marco
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: LoadFromUrl() - Alaska-Version

Beitrag von brandelh »

Jan hat geschrieben:Hallo Hubert,
das Ersetzen von " "->"%20" und "'"->"%27" hat leider keine Änderung gebracht. Er moniert immer noch per 404, das er die url "/string/" nicht finden könne.
Jan
von "/string/" war nie die Rede !

Ist das eventuell eine Xbase++ Variable, die du nicht aufgelöst hast ? ;-)
Gruß
Hubert
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14655
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: LoadFromUrl() - Alaska-Version

Beitrag von Jan »

Marco,

dann bekomme ich einfach nur ein NIL zurück.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14655
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: LoadFromUrl() - Alaska-Version

Beitrag von Jan »

Hubert,

mein Fehler. Das muß natürlich "/search/" heißen, wie ich das auch in meinem Eingangsposting geschrieben hatte.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2936
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: LoadFromUrl() - Alaska-Version

Beitrag von Wolfgang Ciriack »

Hast du mal Georgs Vorschlag probiert, das wäre auch mein Tipp.
versuche mal, die Leerzeichen durch "+" zu ersetzen.
Viele Grüße
Wolfgang
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: LoadFromUrl() - Alaska-Version

Beitrag von brandelh »

Ich habe doch oben gezeigt, dass Leerzeichen bei der URL vom Browser mit %20 ersetzt werden.

PS: hast du es schon mal mit dem LoadFromUrl() von Phil versucht ?
Oder mit WGET das hier schon gelegentlich erwähnt wurde ?

Ich vermute du hast keinen Zugriff auf die LOG Files des Web-Servers ... wenn doch, sieh nach was dort steht.

Da /search/ moniert wird, müsste die Anmeldung am Server (also User, Kennwort, Port etc.) stimmen.
Gruß
Hubert
Benutzeravatar
Scarmo
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 188
Registriert: Di, 24. Jul 2007 9:17

Re: LoadFromUrl() - Alaska-Version

Beitrag von Scarmo »

Und was passiert, wenn Du im Browser nur die Seite aufrufst (http://user:kennwort@192.168.2.227:8080/search/)? Erscheint da irgendetwas oder ist das nur eine leere Seite?

Marco
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14655
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: LoadFromUrl() - Alaska-Version

Beitrag von Jan »

hubert,

was soll ich da jetzt noch sagen? Ich hab doch oben geschrieben, das ich Leerzeichen und Hochkommata ersetzt habe! Und daß das keine Änderung gebracht hat.

Und nein, mit Phils Klasse habe ich es nicht versucht. Das Problem ist, das ich da dann wieder Zusatzbibliotheken brauche. Was ich möglichst vermeiden will. Und wenn ein LoadFromUrl() denn man schon in Xbase++ drin ist ... warum nicht auch nutzen? Ich mache das im Moment mit TServerXMLHTTPRequest() von Pablo. Das ist aber recht umständlich, und auch ziemlich langsam. Daher mein Versuch, das auf Xbase++ pur umzubauen.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14655
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: LoadFromUrl() - Alaska-Version

Beitrag von Jan »

Marco,

leere Seite.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14655
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: LoadFromUrl() - Alaska-Version

Beitrag von Jan »

Georg und Wolfgang,

"+" statt " " ändert nicht, url "/search/" nicht gefunden.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: LoadFromUrl() - Alaska-Version

Beitrag von brandelh »

Jan hat geschrieben:hubert,
was soll ich da jetzt noch sagen? Ich hab doch oben geschrieben, das ich Leerzeichen und Hochkommata ersetzt habe! Und daß das keine Änderung gebracht hat.
weiß ich auch nicht ... was mir bei der RATEREI noch einfällt ist, dass ich NIE ein "/" am Ende habe. Versuche es doch mal mit "...8080/search?archive..."

Aber ohne genaue Fehlerinfos kann niemand helfen ;-)
Gruß
Hubert
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2825
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 96 Mal
Danksagung erhalten: 13 Mal

Re: LoadFromUrl() - Alaska-Version

Beitrag von georg »

Hallo, Jan -

LoadFromUrl( <cURL> , ;
[<nPortNumber>], ;
[<nProtocol>] , ;
[<cProxyUrl>] , ;
[<acByPass> ] , ;
[<cMethod>] , ;

[<cPostString>] ) --> cWebContent | NIL
Der Port, in Deinem Fall 8080, wird als zweiter Parameter und nicht als Teil der URL übergeben. Ich vermute, dass LoadFromURL() einen Request an Port 80 schickt, und von dort einfach ignoriert wird.

Sorry, ich sehe gerade, dass der Port auch als Teil der URL übergeben werden kann. Ich würde es aber trotzdem mal versuchen, ihn über den zweiten Parameter mitzugeben, und aus der URL wegzulassen.
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14655
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: LoadFromUrl() - Alaska-Version

Beitrag von Jan »

Georg,

die Hilfe sagt, daß der Port in der URL angegeben werden kann.
<cURL>

The URL of the document to be loaded. It is a character string that must be formatted in the following way:

[<protocol>://][<username>:<password>@][www.]destination[:<port>][/<target>]

All elements of the string are optional except the destination. All elements are taken into consideration when the HTTP connection is established. However, some of them may be overridden if other parameters are passed to the function.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2825
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 96 Mal
Danksagung erhalten: 13 Mal

Re: LoadFromUrl() - Alaska-Version

Beitrag von georg »

Hallo, Jan -


ja, habe ich auch gesehen und nachgetragen. Nur warst Du schneller. Trotzdem würde ich es mal auf diesem Weg versuchen.
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14655
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: LoadFromUrl() - Alaska-Version

Beitrag von Jan »

Hubert,

gute Idee, bringt aber nichts. Jetzt findet er die url "/search" nicht mehr.

Und was soll ich an Fehlerinfos mehr sagen als das, was ich vom Server zurück bekomme? Ich habe ja auch nicht mehr!

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14655
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: LoadFromUrl() - Alaska-Version

Beitrag von Jan »

Georg,

jetzt bin ich echt irritiert. Wenn ich den Port angebe, bekomme ich ein NIL zurück ... Was soll denn das jetzt???

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2825
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 96 Mal
Danksagung erhalten: 13 Mal

Re: LoadFromUrl() - Alaska-Version

Beitrag von georg »

Hallo, Jan -


Dein Problem hat zwei Komponenten:

abweichender Port
abweichende Parameter

Lies Dir doch bitte mal das hier durch: https://de.wikipedia.org/wiki/URL-Encoding

Die Leerzeichen in der URL stellen ein Problem dar, da es möglich ist (!), dass LoadFromURL() sich wie ein Browser verhält und hier die Weitergabe der URL abbricht, und daher Deine Anforderung nicht ausgeführt werden kann, da der Server einen unvollständigen Paramter-Satz erhält. Leider schweigt sich Alaska in der Dokumentation dazu aus.

Für einen grundsätzlichen Test wäre eine kürzere URL ohne Sonderzeichen nicht schlecht, weil Du dann diesen Einflussfaktor ausschliessen kannst.
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14655
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: LoadFromUrl() - Alaska-Version

Beitrag von Jan »

Hallo Georg,

OK, das hat mich jetzt einen Schritt weiter gebracht. Ich habe mal de ganzen String zusammen gekürzt, so das wirklich kein Leerzeichen und kein Hochkomma mehr dirn war (ist ja egal, ob die Abfrage dann noch sinnvoll ist). Das gab ersteinmal die gleiche Rückmeldung.

Dann habe ich mir den Wikipedia-Artikel angesehen. Und mal mit dem Mut der Verzweiflung das "?" durch ein "%3F" ersetzt. Ist ja ansich Schwachsinn, denn das "?" ist eigentlich OK. Aber siehe da: Plötzlich ist die Rückmeldung eine andere! Jetzt war nämlich nicht mehr nur "/search/" nicht mehr unbekannt, sondern der gesamte Rest des Strings einschl. "/search/" stand in dieser Rückmeldung drin.

Nun gut, die Rückgabe hat das "&" noch mit "amp;" ersetzt. Also auch mal das umgebaut in "%26". Leider hat das keine Besserung gebracht ...

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2825
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 96 Mal
Danksagung erhalten: 13 Mal

Re: LoadFromUrl() - Alaska-Version

Beitrag von georg »

Hallo, Jan -


ich verwende ja wget, und da muss ich solche Strings auch encodieren. Das sieht etwa so aus:

Code: Alles auswählen

aTrans := {;
  {":", "%3A"},;
  {"/", "%2F"},;
  {"[", "%5B"},;
  {"]", "%5D"},;
  {"(", "%28"},;
  {")", "%29"},;
  {Chr(13), "%0D"},;
  {Chr(10), "%0A"};
}

Function URLEncode(cURL)
   Local nI, nLen
   nLen := Len(aTrans)
   FOR nI := 1 TO nLen
      cURL := StrTran(cURL, aTrans[nI, 1], aTrans[nI, 2])
   NEXT
RETURN(cURL)
Das habe ich vor Jahren mal programmiert, weil ich bei POST-Operationen bei einigen Diensten Probleme hatte. Wenn ich mir meinen Code und Dein Beispiel ansehe, dann sind da auch z.B. ( oder ) vorhanden - also hier würde ich mal ansetzen.

Wobei ich nur den Teil der URL durch URLEncode() durchnudeln würde, der Parameter enthält.
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: LoadFromUrl() - Alaska-Version

Beitrag von brandelh »

Jan hat geschrieben:Und mal mit dem Mut der Verzweiflung das "?" durch ein "%3F" ersetzt. Ist ja ansich Schwachsinn, denn das "?" ist eigentlich OK.
Aber siehe da: Plötzlich ist die Rückmeldung eine andere! Jetzt war nämlich nicht mehr nur "/search/" nicht mehr unbekannt, sondern der gesamte Rest des Strings einschl. "/search/" stand in dieser Rückmeldung drin.
das ist ja auch logisch, denn das "?" trennt BEFEHL von PARAMETERN für den Befehl.
Somit hast du den Befehl verlängert ...

Du musst raus bekommen, was genau der Server erhält - im Unterschied zum direkten Browser aufruf.
Wenn du an die Protokolle nicht heran kommst (weil sie auf einem fremden Server liegen), dann musst du dir einen eigenen installieren - aus der LUFT fällt die Lösung nicht ;-)

PS: ich könnte dir auf Wunsch einen nennen, auf den ich Zugreifen kann und die LOG dann durchgeben ;-)
Gruß
Hubert
Antworten