2011-01-06 15 views
5

Kendime cpaneli kullanarak bir IP adresi paylaşan bir linux sunucusunda barındırıldığı bir web sitesi aldım. Sorun şu ki, siteme bir dosya yüklemek için bu kodu kullanmak istiyorum. Www.site gibi site adresini her kullandığımda, URL’nin hatalı biçimlendirildiğini belirten bir istisna alıyorum. IP adresini kullandığımda (bu paylaşılan bir sunucudur), adresime nasıl bağlanacağımı bilmediğimden php kodumu bulamıyorum.Android, http: Paylaşılan bir sunucu tarafından barındırılan bir siteye dosya nasıl yüklenir?

Herkes, sitemi bana nasıl bağlayacağını bilen var mı? Sadece bir xml dosyası yükleyebilir miyim? Gerçekten yardıma ihtiyacım var .......

Ağ iletişimi konusunda bilgim olmadığı için herhangi bir yardım gerçekten takdir edilecektir.

HttpURLConnection connection = null; 
    DataOutputStream outputStream = null; 
    DataInputStream inputStream = null; 
    String pathToOurFile = "/data/data/test.send/testsend.txt"; 
    String urlServer = "http://www.site.com/filefortransfer.php"; 
    String lineEnd = "\r\n"; 
    String twoHyphens = "--"; 
    String boundary = "*****"; 

    int bytesRead, bytesAvailable, bufferSize; 
    byte[] buffer; 
    int maxBufferSize = 1*1024*1024; 

    try 
    { 
    FileInputStream fileInputStream = new FileInputStream(new File(pathToOurFile)); 

    URL url = new URL(urlServer); 
    connection = (HttpURLConnection) url.openConnection(); 

    // Allow Inputs & Outputs 
    connection.setDoInput(true); 
    connection.setDoOutput(true); 
    connection.setUseCaches(false); 

    // Enable POST method 
    connection.setRequestMethod("POST"); 

    connection.setRequestProperty("Connection", "Keep-Alive"); 
    connection.setRequestProperty("Content-Type", "multipart/form-data;boundary="+boundary); 

    outputStream = new DataOutputStream(connection.getOutputStream()); 
    outputStream.writeBytes(twoHyphens + boundary + lineEnd); 
    outputStream.writeBytes("Content-Disposition: form-data; name=\"uploadedfile\";filename=\"" + pathToOurFile +"\"" + lineEnd); 
    outputStream.writeBytes(lineEnd); 

    bytesAvailable = fileInputStream.available(); 
    bufferSize = Math.min(bytesAvailable, maxBufferSize); 
    buffer = new byte[bufferSize]; 

    // Read file 
    bytesRead = fileInputStream.read(buffer, 0, bufferSize); 

    while (bytesRead > 0) 
    { 
    outputStream.write(buffer, 0, bufferSize); 
    bytesAvailable = fileInputStream.available(); 
    bufferSize = Math.min(bytesAvailable, maxBufferSize); 
    bytesRead = fileInputStream.read(buffer, 0, bufferSize); 
    } 

    outputStream.writeBytes(lineEnd); 
    outputStream.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd); 

    // Responses from the server (code and message) 
    String serverResponseCode = Integer.toString(connection.getResponseCode()); 
    String serverResponseMessage = connection.getResponseMessage(); 

    fileInputStream.close(); 
    outputStream.flush(); 
    outputStream.close(); 

    } 
    catch (Exception ex) 
    { 
     Log.e("MediaPlayer", "error: " + ex.getMessage(), ex); 
    } 
    } 

cevap

1

Android'de, daha karmaşık HTTP ağları için HttpClient sınıfının kullanılması tercih edilir. İşte

çok parçalı dosya yükleme bir örnektir: http://rapidandroid.org/wiki/HttpUpload

+0

i; kodu ve apache HttpComponents, istemci ve çekirdekte koyarak denedim, ama tip org.apache.james alıyorum. mime4j.message.SingleBody çözümlenemiyor. Paket alanındaki gerekli .class dosyalarından dolaylı olarak referans alınır. Bunu nasıl çözebilirim? Eclipse'de android ile çalışıyorum ve bir çözüm aramaya çalıştım ama hiçbir şey alamıyorum. – Cid

+0

, org.apache.james.mime4j kütüphanesini referans – Cid

+0

'a ekleyerek yeni bir problemin kırpılmasını sağladı. Günlüğü bana bu sorunu gösteren çıktı, java.lang.noclassdeffounderror: org.apache.http.entity.mime ve kütüphanelerim var, sorun ne? – Cid