Ich hab da ein kleines Problem mit der HTTP-Komponente der Indys.
Ich schicke per POST ein paar Daten an eine URL. Als Antwort erwarte ich ein bisserl XML mit Statusmeldungen, ob das gesendete ok war, oder ob da ein Fehler drin ist. Diese Antwort muss ich parsen und ggf. darauf reagieren.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| try Response := fIDHTTP.Post(BaseApiURL, ParamList); except on E: EIdHTTPProtocolException do begin MessageText := Scrobble_ProtocolError + #13#10 + 'Server message:'#13#10 + E.Message + #13#10 + Response; SendMessage(fWindowHandle, WM_Scrobbler, SC_NowPlayingException, lParam(PChar(MessageText))); end; end; |
Problem dabei ist, wenn die Anfrage nicht in Ordnung war, dann wird kein 200er Code zurückgeliefert, sondern mal ein 400 (Bad Request) oder auch ein 403 (Forbidden). Die Variable
Response enthält dann auch nur einen Leerstring. In der Dokumentation zu der API des Webservices hinter der URL steht aber, dass auch dann ein passendes XML-File geliefert wird, wo genauer drin steht,
warum das ein Bad Request oder Forbidden war. Per Wireshark konnte ich diese Daten auch sehen, aber wie komme ich mit den Indys daran?

We are, we were and will not be.