ben bir PDF dosyası almaya çalışıyorum:ikili veri olarak PDF dosyasını getirilemiyor
URL: https://domain_name/xyz/_id/download/
doğrudan bir pdf dosyası için değil puan yapar ve her benzersiz dosya indirilen alır neyin Belirli bir < _id> alanını yorumlar. Ben HTTPsURLConnection olması gerektiği ise onun Content-Type 'text/html' şeklinde olduğu bunu almaya çalıştığınızda
ben anında süre indirilen alır tarayıcısı ve Pdf dosyasının adres çubuğuna bu bağlantıyı koymak 'uygulama/pdf' içinde.
Bağlanmadan önce 'setRequestProperty' öğesini 'application/pdf' olarak denedim ancak dosya her zaman 'text/html' biçiminde indirildi. Bunun için kullanıyorum
Yöntem)
1 'GET: çünkü ben HttpClient yerine HttpsURLConnection kullanımına gerek var mı?
2) Güvenliği artırmak için bu tür bağlantılar kullanılıyor mu?
3) Lütfen hatalarımı belirtin.
4) Sunucuda bulunan dosya adını nasıl bilebilirim?
Ben ben uyguladık ana kodları aşağıda yapıştırma: Ben çok araştırdım ve sonuç elde edemedik
URL url = new URL(sb.toString());
//created new connection
HttpsURLConnection urlConnection = (HttpsURLConnection) url.openConnection();
//have set the request method and property
urlConnection.setRequestMethod("GET");
urlConnection.setDoOutput(true);
urlConnection.setRequestProperty("Content-Type", "application/pdf");
Log.e("Content Type--->", urlConnection.getContentType()+" "+ urlConnection.getResponseCode()+" "+ urlConnection.getResponseMessage()+" "+urlConnection.getHeaderField("Content-Type"));
//and connecting!
urlConnection.connect();
//setting the path where we want to save the file
//in this case, going to save it on the root directory of the
//sd card.
File SDCardRoot = Environment.getExternalStorageDirectory();
//created a new file, specifying the path, and the filename
File file = new File(SDCardRoot,"example.pdf");
if((Environment.getExternalStorageState()).equals(Environment.MEDIA_MOUNTED_READ_ONLY))
//writing the downloaded data into the file we created
FileOutputStream fileOutput = new FileOutputStream(file);
//this will be used in reading the data from the internet
InputStream inputStream = urlConnection.getInputStream();
//this is the total size of the file
int totalSize = urlConnection.getContentLength();
//variable to store total downloaded bytes
Log.e("Total File Size ---->", ""+totalSize);
int downloadedSize = 0;
//create a buffer...
byte[] buffer = new byte[1024];
int bufferLength = 0; //used to store a temporary size of the buffer
//Reading through the input buffer and write the contents to the file
while ((bufferLength = inputStream.read(buffer)) > 0) {
//add the data in the buffer to the file in the file output stream (the file on the sd card
fileOutput.write(buffer, 0, bufferLength);
//adding up the size
downloadedSize += bufferLength;
//reporting the progress:
Log.e("This much downloaded---->",""+ downloadedSize);
}
//closed the output stream
fileOutput.close();
. Mümkünse lütfen bu olayını ilk defa uygularken hatamı ayrıntılandırmaya çalışın.
** gibi doğrudan pdf bağlantılarınız alınırken çalıştı: http://labs.google.com/papers/bigtable-osdi06.pdf ve dahası onların 'Content-Type' da 'application/pdf' **
sayesinde oldu, kolayca indirilen olsun.
Sunucuyla yanıt veren MIME türünü kontrol ettiniz mi? –