2011-01-06 9 views
5

Kupiłem sobie stronę internetową, na której jest ona hostowana na serwerze Linux, który dzieli jeden adres IP za pomocą cPanelu. Problem, który jest teraz, chcę użyć tego kodu, aby przesłać plik do mojej witryny. Za każdym razem, gdy używam adresu strony, takiego jak www.site, dostanę wyjątek mówiąc, że adres URL jest źle sformułowany. Kiedy używam adresu IP (ponieważ jest to serwer współdzielony), nie mogę znaleźć mojego kodu php, ponieważ nie wiem, jak połączyć się z moim adresem.Android, http: Jak przesłać plik do witryny hostowanej przez udostępniony serwer?

Czy ktoś ... ktoś wie, jak połączyć mnie z moją witryną, aby przesłać plik xml? Naprawdę potrzebuję pomocy tutaj .......

Każda pomoc byłaby naprawdę doceniona, ponieważ nie mam wiedzy w zakresie tworzenia sieci.

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); 
    } 
    } 

Odpowiedz

1

Na urządzeniach z systemem Android lepiej jest używać bardziej złożonych sieci HTTP do korzystania z klasy HttpClient.

Oto przykład wieloczęściowy przesłanie pliku: http://rapidandroid.org/wiki/HttpUpload

+0

I; ve próbowała kod i oddanie w httpcomponents Apache, klient i rdzenia, ale jestem coraz The org.apache.james typu. mime4j.message.SingleBody nie może zostać rozwiązany. Jest pośrednio odwołany od wymaganych plików .class w obszarze pakietu. Jak mogę to rozwiązać? Pracuję z Androidem na Eclipse i próbowałem szukać rozwiązania, ale nie mogę go uzyskać. – Cid

+0

rozwiązałem to, dodając bibliotekę org.apache.james.mime4j do mojego pliku referencyjnego – Cid

+0

, pojawił się nowy problem. Dziennik wyszedł pokazując mi ten problem, java.lang.noclassdeffounderror: org.apache.http.entity.mime, i mam biblioteki, co jest nie tak? – Cid

Powiązane problemy