UploadDataProvider

public abstract class UploadDataProvider implements Closeable


Yerleştiricinin UrlRequest için bir yükleme gövdesi sağlamasına olanak tanıyan soyut sınıf. Hem parçalı olmayan (boyutu önceden bilinen) hem de parçalı (boyutu önceden bilinmeyen) yüklemeleri destekler. Tüm sunucuların parçalı yüklemeyi desteklemediğini unutmayın.

Yükleme işlemi her zaman parçalara ayrılır (veriler birden fazla kez gönderilirse birden fazla yükleme boyunca) veya hiçbir zaman parçalara ayrılmaz.

Özet

Herkese açık oluşturucular

Herkese açık yöntemler

void

Bu UploadDataProvider bir istek tarafından artık gerekli olmadığında çağrılır. Böylece kaynaklar (ör. dosya) açıkça serbest bırakılabilir.

abstract long

Bu, parçalı olmayan bir yükleme ise yüklemenin uzunluğunu döndürür.

abstract void
read(UploadDataSink uploadDataSink, ByteBuffer byteBuffer)

Yükleme verilerini byteBuffer'ya okur.

abstract void
rewind(UploadDataSink uploadDataSink)

Yükleme verilerini başa sarar.

Herkese açık oluşturucular

UploadDataProvider

public UploadDataProvider()

Herkese açık yöntemler

kapat

public void close()

Bu UploadDataProvider bir istek tarafından artık gerekli olmadığında çağrılır. Böylece kaynaklar (ör. dosya) açıkça serbest bırakılabilir.

Verdiği hatalar
java.io.IOException

işlem sırasında herhangi bir IOException oluştuysa Bu işlem, istek henüz tamamlanmamışsa isteğin başarısız olmasına neden olur. Aksi takdirde istek kaydedilir.

getLength

public abstract long getLength()

Bu, parçalı olmayan bir yükleme ise yüklemenin uzunluğunu döndürür. Bu, parçalı bir yükleme ise her zaman -1 döndürmelidir.

İadeler
long

Parçalar halinde yüklenmeyen yüklemeler için yükleme süresi, aksi takdirde -1.

Verdiği hatalar
java.io.IOException

işlem sırasında herhangi bir IOException oluştuysa

read

public abstract void read(UploadDataSink uploadDataSink, ByteBuffer byteBuffer)

Yükleme verilerini byteBuffer'ya okur. Tamamlandığında arabelleğin konumu, okunan baytların sonuna güncellenir. Arabelleğin sınırı değiştirilmez. Bu yöntemin her çağrısından sonra uploadDataSink için eşzamanlı veya eşzamansız tek bir çağrı yapılmalıdır: Başarı durumunda onReadSucceeded, hata durumunda onReadError. Bu yöntemlerden biri veya diğeri çağrılana kadar ne okuma ne de geri sarma işlemi çağrılmaz. İlişkili UrlRequest iptal edilmiş olsa bile kaynakların güvenli bir şekilde serbest bırakılabilmesi için yine de birinin veya diğerinin çağrılması gerekir. İstisna oluşturmak da kaynakların serbest bırakılmasına ve isteğin hata vermesine neden olur.

Not: Parçalar halinde yüklenmeyen dosyalarda onReadSucceeded yalnızca okuma işlemi başarılı olduğunda ve byteBuffer içine en az bir bayt okunduğunda çağrılmalıdır. Parçalı yüklemelerde (verilerin boyutu bilinmiyor) son parça için boş bir bayt arabelleğiyle onReadSucceeded çağrılmasına izin verilir.

Parametreler
UploadDataSink uploadDataSink

Okuma işlemi tamamlandığında bildirilecek nesne.

ByteBuffer byteBuffer

Okunan baytların kopyalanacağı arabellek. byteBuffer'ın sınırını değiştirmeyin.

Verdiği hatalar
java.io.IOException

işlem sırasında herhangi bir IOException oluştuysa onFailed, CallbackException'nin nedeni olarak atılan istisna ayarlanmış şekilde çağrılır.

geri sar

public abstract void rewind(UploadDataSink uploadDataSink)

Yükleme verilerini başa sarar. Cronet, yükleme verisi sağlayıcının read hiç çağrılmamış gibi eşdeğer bir durumda olmasını gerektirdiğinde çağrılır.

İşlemin tamamlandığını belirtmek için bu işlevin uygulamaları, başarıyı belirtmek üzere onRewindSucceeded, başarısızlığı belirtmek üzere ise onRewindError işlevini çağırmalıdır. İlişkili UrlRequest iptal edilmiş olsa bile kaynakların güvenli bir şekilde serbest bırakılabilmesi için yine de birinin veya diğerinin çağrılması gerekir. Yöntemden istisna oluşturmak, onRewindError yöntemini çağırmaya eş değerdir. Geri sarma desteklenmiyorsa (ör. tek seferlik bir akıştan okuma yapılıyorsa) bu işlev hemen onRewindError işlevini çağırmalıdır.

Uygulayıcı, önceki paragrafta açıklandığı gibi geri sarma işleminin tamamlandığını havuz'a bildirene kadar ne read ne de eşzamanlı bir rewind çağrısının yayınlanmayacağını güvenle varsayabilir.

Bu yöntem, gövdenin birden fazla kez yüklenmesi gerektiğinde Cronet tarafından dahili olarak kullanılır. Bu durum, yönlendirmeleri takip ederken veya zaman aşımı ya da ağ bağlantısı kesildikten sonra istekleri yeniden denerken gibi birçok farklı durumda ortaya çıkabilir. Geri sarma özelliğinin uygulanması genellikle isteğe bağlı olsa da bu özelliği gerektiren istekler, geri sarma uygulanmadığı sürece başarısız olur.

Parametreler
UploadDataSink uploadDataSink

Geri sarma işlemi başarıyla veya başka bir şekilde tamamlandığında bildirim gönderilecek nesne.

Verdiği hatalar
java.io.IOException

işlem sırasında herhangi bir IOException oluştuysa onFailed, CallbackException'nin nedeni olarak atılan istisna ayarlanmış şekilde çağrılır.