AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Problem bei Seitenabfrage über Indy
Thema durchsuchen
Ansicht
Themen-Optionen

Problem bei Seitenabfrage über Indy

Ein Thema von stifflersmom · begonnen am 28. Mär 2017 · letzter Beitrag vom 28. Mär 2017
Antwort Antwort
stifflersmom

Registriert seit: 8. Dez 2005
Ort: 24994 Holt
374 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Problem bei Seitenabfrage über Indy

  Alt 28. Mär 2017, 14:22
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:
 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;
Nachtrag:
Leite ich die Abfrage über Fiddler als Proxy-Server, dann funktioniert es so wie es soll. Nur die direkte Abfrage knallt gegen die Wand...

Geändert von stifflersmom (28. Mär 2017 um 14:41 Uhr)
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#2

AW: Problem bei Seitenabfrage über Indy

  Alt 28. Mär 2017, 14:51
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:
  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;
Wenn Du die bei FormMain.Add_Debug ausgegebene sUrlLong unverändert im Browser eingibst, funktioniert das?

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.
  Mit Zitat antworten Zitat
stifflersmom

Registriert seit: 8. Dez 2005
Ort: 24994 Holt
374 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: Problem bei Seitenabfrage über Indy

  Alt 28. Mär 2017, 14:53
Ja, die über die Debug-funktion geloggte Url funktioniert euinwandfrei im Browser.

Und wie gesagt, über den Fiddler-Proxy funktioniert es auch...
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.060 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Problem bei Seitenabfrage über Indy

  Alt 28. Mär 2017, 14:57
Debug mal hinterher, ob Indy die URL nicht noch irgendwie encodiert und das die Gegenseite nicht annimmt. So einen Fall hatte ich gerade auch.
  Mit Zitat antworten Zitat
stifflersmom

Registriert seit: 8. Dez 2005
Ort: 24994 Holt
374 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: Problem bei Seitenabfrage über Indy

  Alt 28. Mär 2017, 15:02
Das abstellen der hoForceEncodedParams brachte schon mal nichts...
Code:
idHttp1.HTTPOptions := [];
  Mit Zitat antworten Zitat
stifflersmom

Registriert seit: 8. Dez 2005
Ort: 24994 Holt
374 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: Problem bei Seitenabfrage über Indy

  Alt 28. Mär 2017, 16:43
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
http://evatr.bff-online.de/evatrRPC?...asse=&Druck=ja
17:40:23:512 - UST-ID Abfrage über Bundeszentralamt für Steuern AFTER ENCODE
http://evatr.bff-online.de/evatrRPC?...Druck=ja%20%20

Vielen Dank an alle
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#7

AW: Problem bei Seitenabfrage über Indy

  Alt 28. Mär 2017, 17:00
Sind die beiden Leerzeichen (%20%20) am Ende denn wirklich erforderlich?

Im Browser werden sie jedenfalls nicht benötigt.
  Mit Zitat antworten Zitat
stifflersmom

Registriert seit: 8. Dez 2005
Ort: 24994 Holt
374 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

AW: Problem bei Seitenabfrage über Indy

  Alt 28. Mär 2017, 17:20
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...
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz