Hallo,
nach einem kurzen Osterurlaub, versuch ich mich weiter daran, den Code aus dem vorherigen Post in Delphi umzusetzen. Erstmal versuch ich nur, die Verbindung herzustellen und ein Suchkommando zu schicken, die Antwort soll dann einfach in ein Memo geschrieben werden.
Aber ich bekomme einen Error: HTTP/1.1 400 Bad Request
Scheinbar bau ich den Request falsch zusammen?
Vielleicht ist auch die ganze Vorgehensweise falsch, da ich nicht wirklich weiß, was ich da mache.
Delphi-Quellcode:
procedure TForm3.Button1Click(Sender: TObject);
var w:TIdWebDAV;
content:
string;
s:
string;
c:
String;
AskStream:TMemoryStream;
ResponseStream:TStringStream;
begin
content:='
<?xml version=""1.0""?>'+
'
<g:searchrequest xmlns:g=""DAV:"">'+
'
<g:sql>'+
'
SELECT '+
'
""urn:schemas:contacts:sn"", ""urn:schemas:contacts:givenName"",'+
'
""urn:schemas:contacts:email1"", ""urn:schemas:contacts:telephoneNumber""'+
'
FROM '+
'
Scope(''
SHALLOW TRAVERSAL OF ""http://192.168.111.157/public/Kontakte""''
)'+
'
</g:sql>'+
'
</g:searchrequest>"';
ResponseStream:=TStringStream.Create(s);
AskStream:=TMemoryStream.Create;
w:=TIdWebDAV.Create();
w.Request.Method:='
SEARCH';
w.Request.Username:=Username;
w.Request.Password:=Password;
w.Request.BasicAuthentication:=true;
w.Request.URL:='
http://192.168.111.157/public/Kontakte';
w.Request.ContentType:='
text/xml';
AskStream.
Write(content,Length(content));
w.DAVSearch('
http://192.168.111.157/public/Kontakte',-1,-1,AskStream,ResponseStream);
Memo1.Lines.Add(ResponseStream.DataString);
AskStream.Free;
ResponseStream.Free;
end;