Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Yandex Disk üzerinden TIdWebDAV ile nasıl dosya alabilirim
#1
Merhabalar 

Yandex Disk üzerinde bulunan bazı dosyaları download ve upload etmem gerekiyor
Şimdilik download için basit bur uygulama yazmaya çalıştım fakat sürekli 401 hatası alıyorum

Acaba aşağıdaki kod ile bu işlem yapılamazmı

Teşekkürler

procedure TForm1.Button1Click(Sender: TObject);
var
 q: TStringStream;
 r: TMemoryStream;
 s: TStream;
begin
 q := TStringStream.Create(
   '<propertyupdate xmlns="DAV:">' + sLineBreak +
   '<set>' + sLineBreak +
   '<prop>' + sLineBreak +
   '<public_url xmlns="urn:yandex:disk:meta">true</public_url>' + sLineBreak +
   '</prop>' + sLineBreak +
   '</set>' + sLineBreak +
   '</propertyupdate>'
 );

 try
   r := TMemoryStream.Create;
   s := TStream.Create;
   try
     Memo1.Lines.Clear;
     IdWebDAV1.Request.Username := txUser.Text;
     IdWebDAV1.Request.Password := txPassword.Text;
     IdWebDAV1.Request.UserAgent := 'my_application/0.0.1';
     IdWebDAV1.Request.ContentType := 'text/xml';
     IdWebDAV1.Request.Charset := 'utf-8';
     IdWebDAV1.Request.CustomHeaders.Values['Authorization'] := 'OAuth c953e33d6ec14895aa776f55145e73b5';
     IdWebDAV1.Request.BasicAuthentication := True;
     IdWebDAV1.DAVPropPatch('https://webdav.yandex.com.tr/Test.jpg', q, r);
     r.Position := 0;
     Memo1.Lines.Text := ReadStringAsCharset(r, IdWebDAV1.Response.Charset);
     r.Position := 0;
     r.SaveToFile('C:\Sil\Test.jpg');
   finally
     r.Free;
   end;
 finally
   q.Free;
 end;
end;
Bu dünyada kendine sakladığın bilgi ahirette işine yaramaz. 
Cevapla
#2
Yandex Disk REST API
not if
Cevapla
#3
(17-03-2023, Saat: 16:29)RAD Coder Adlı Kullanıcıdan Alıntı: Yandex Disk REST API

RestApi kısına girmeden delphi içindeki TIdWebDAV ile çözümü için uğraşmıştım. Az önce çözüldü teşekkürler

Küçük bir değişklik ile aşağıdaki şekilde çözüldü 


procedure TForm1.Button1Click(Sender: TObject);
var
 q: TStringStream;
 r: TMemoryStream;
begin
 q := TStringStream.Create(
   '<propertyupdate xmlns="DAV:">' + sLineBreak +
   '<set>' + sLineBreak +
   '<prop>' + sLineBreak +
   '<public_url xmlns="urn:yandex:disk:meta">true</public_url>' + sLineBreak +
   '</prop>' + sLineBreak +
   '</set>' + sLineBreak +
   '</propertyupdate>'
 );

 try
   r := TMemoryStream.Create;
   try
     Memo1.Lines.Clear;
     IdWebDAV1.Request.Charset := 'utf-8';
//      IdWebDAV1.Request.UserAgent := 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0';
     IdWebDAV1.Request.Username := txUser.Text;
     IdWebDAV1.Request.Password := txPassword.Text;
     IdWebDAV1.Request.UserAgent := 'my_application/0.0.1';
     IdWebDAV1.Request.ContentType := 'text/xml';
     IdWebDAV1.Request.Charset := 'utf-8';
//      IdWebDAV1.Request.CustomHeaders.Values['Authorization'] := 'OAuth c953e33d6ec14895aa776f55145e73b5';
     IdWebDAV1.Request.BasicAuthentication := True;
     IdWebDAV1.Get(txLink.Text, r);

     r.Position := 0;
     r.SaveToFile('C:\Sil\Test1.jpg');
   finally
     r.Free;
   end;
 finally
   q.Free;
 end;
end;
Bu dünyada kendine sakladığın bilgi ahirette işine yaramaz. 
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Server-client üzerinden Web arayüze erişim SercanTEK 12 5.503 23-02-2023, Saat: 16:08
Son Yorum: SercanTEK
  Dosya content type bulma tuna 7 853 18-01-2023, Saat: 20:29
Son Yorum: tuna
  FastReport Nasıl Kurulur ? cemakkus 4 311 06-12-2022, Saat: 17:14
Son Yorum: cemakkus
  HTTPRIO ile TLS 1.2 Kullanımı Nasıl Yapılabilir? hi_selamlar 5 739 16-11-2022, Saat: 20:46
Son Yorum: hi_selamlar
Question Bu struct nasıl çevirilir ? seci20 4 532 03-11-2022, Saat: 09:23
Son Yorum: 3ddark



Konuyu Okuyanlar: 1 Ziyaretçi