![]() |
Problem bei Seitenabfrage über Indy
Moin,
ich versuche mit Indy eine Seite aufzurufen, genauer gesagt eine Umsatzsteuer-ID über die Portalseite des Bundesamtes für Finanzen zu überprüfen und bekomme immer eine Bad Request Exception und kann nicht verstehen warum... Die übergebene Url im Browser funktioniert so wie es soll.
Code:
Nachtrag:
sUrllong := 'http://evatr.bff-online.de/evatrRPC?UstId_1=###agustid###&UstId_2=###customersustid###' +
'&Firmenname=###firmenname###&Ort=###firmaort###&PLZ=###firmaplz###&Strasse=###firmastrasse###' + '&Druck=ja '; sUrlLong := StringReplace(sUrlLong,'###customersustid###',aAdressenRec.Land+aAdressenRec.ust_id_nr,[rfIgnoreCase, RfReplaceAll]); sUrlLong := StringReplace(sUrlLong,'###agustid###',sagustid,[rfIgnoreCase, RfReplaceAll]); If ShortQuery Then Begin sUrlLong := StringReplace(sUrlLong,'###firmenname###','',[rfIgnoreCase, RfReplaceAll]); sUrlLong := StringReplace(sUrlLong,'###firmaort###','',[rfIgnoreCase, RfReplaceAll]); sUrlLong := StringReplace(sUrlLong,'###firmaplz###','',[rfIgnoreCase, RfReplaceAll]); sUrlLong := StringReplace(sUrlLong,'###firmastrasse###','',[rfIgnoreCase, RfReplaceAll]); End else Begin sUrlLong := StringReplace(sUrlLong,'###firmenname###',aAdressenRec.Name,[rfIgnoreCase, RfReplaceAll]); sUrlLong := StringReplace(sUrlLong,'###firmaort###',aAdressenRec.Ort,[rfIgnoreCase, RfReplaceAll]); sUrlLong := StringReplace(sUrlLong,'###firmaplz###',aAdressenRec.Plz,[rfIgnoreCase, RfReplaceAll]); sUrlLong := StringReplace(sUrlLong,'###firmastrasse###',aAdressenRec.Strasse,[rfIgnoreCase, RfReplaceAll]); End; FormMain.Add_Debug('UST-ID Abfrage über Bundeszentralamt für Steuern ###############'+ #13#10+sUrlLong); Try idHttp1 := TIdHTTP.Create; responseStream := TMemoryStream.Create; Screen.Cursor := crHourGlass; try IdHTTP1.Get(sUrlLong, responseStream); except on E: EIdException Do FormMain.add_info('UST Abfrage gescheitert '+E.Message); end; SetString(resultstring, PAnsiChar(responseStream.Memory), responseStream.Size); Finally idHttp1.Free; responseStream.Clear; responseStream.Free; Screen.Cursor := crDefault; End; Leite ich die Abfrage über Fiddler als Proxy-Server, dann funktioniert es so wie es soll. Nur die direkte Abfrage knallt gegen die Wand... |
AW: Problem bei Seitenabfrage über Indy
Bad Request Exception lässt darauf schließen, dass in der URL irgendwas nicht stimmt.
Habe den Quelltext mal ein bisserl angepasst (ungetestet):
Delphi-Quellcode:
Wenn Du die bei FormMain.Add_Debug ausgegebene sUrlLong unverändert im Browser eingibst, funktioniert das?
sUrllong := 'http://evatr.bff-online.de/evatrRPC?UstId_1=%s&UstId_2=%s&Firmenname=%s&Ort=%s&PLZ=%s&Strasse=%s&Druck=ja';
If ShortQuery Then Begin sUrllong := Format('http://evatr.bff-online.de/evatrRPC?UstId_1=%s&UstId_2=%s' + '&Firmenname=%s&Ort=%s&PLZ=%s&Strasse=%s&Druck=ja',[ sagustid, // agustid, aAdressenRec.Land+aAdressenRec.ust_id_nr, // customersustid '', // firmenname '', // firmaort, '', // firmaplz, '' // firmastrasse ]); End else Begin sUrllong := Format('http://evatr.bff-online.de/evatrRPC?UstId_1=%s&UstId_2=%s' + '&Firmenname=%s&Ort=%s&PLZ=%s&Strasse=%s&Druck=ja',[ sagustid, // agustid, aAdressenRec.Land+aAdressenRec.ust_id_nr // customersustid, aAdressenRec.Name, // firmenname, aAdressenRec.Ort, // firmaort, aAdressenRec.Plz, // firmaplz, aAdressenRec.Strasse // firmastrasse ]); End; FormMain.Add_Debug('UST-ID Abfrage über Bundeszentralamt für Steuern ###############'+ #13#10+sUrlLong); Try idHttp1 := TIdHTTP.Create; responseStream := TMemoryStream.Create; Screen.Cursor := crHourGlass; try IdHTTP1.Get(sUrlLong, responseStream); IdHTTP1.Disconnect(True); except on E: EIdException Do FormMain.add_info('UST Abfrage gescheitert '+E.Message); end; SetString(resultstring, PAnsiChar(responseStream.Memory), responseStream.Size); Finally idHttp1.Free; responseStream.Clear; responseStream.Free; Screen.Cursor := crDefault; End; Da ich keine Ahnung habe, welche Werte genau übergeben werden müssen, hab' ich es mal mit Nonsens versucht. Es wird ein Ergebnis geliefert, welches besagt, dass meine Daten Nonsens sind. Es wird aber keine Exception geworfen. |
AW: Problem bei Seitenabfrage über Indy
Ja, die über die Debug-funktion geloggte Url funktioniert euinwandfrei im Browser.
Und wie gesagt, über den Fiddler-Proxy funktioniert es auch... |
AW: Problem bei Seitenabfrage über Indy
Debug mal hinterher, ob Indy die URL nicht noch irgendwie encodiert und das die Gegenseite nicht annimmt. So einen Fall hatte ich gerade auch.
|
AW: Problem bei Seitenabfrage über Indy
Das abstellen der hoForceEncodedParams brachte schon mal nichts...
Code:
idHttp1.HTTPOptions := [];
|
AW: Problem bei Seitenabfrage über Indy
Tatsächlich war es die "nicht vorhandene" Encodierung der Url.
Also Danke an Nahpets, Du hast mich in die richtige Richtung gestossen. Man beachte das %20%20 hinter dem ja am Ende... 17:40:23:512 - UST-ID Abfrage über Bundeszentralamt für Steuern BEFORE ENCODE ![]() 17:40:23:512 - UST-ID Abfrage über Bundeszentralamt für Steuern AFTER ENCODE ![]() Vielen Dank an alle |
AW: Problem bei Seitenabfrage über Indy
Sind die beiden Leerzeichen (%20%20) am Ende denn wirklich erforderlich?
Im Browser werden sie jedenfalls nicht benötigt. |
AW: Problem bei Seitenabfrage über Indy
Ich hatte den Link per Copy&Paste in die Anwendung geholt und weiß das jetzt so ad hoc nicht wirklich, denke aber, dass mir mein beherzter Doppelklick da ein Bein gestellt hat...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz