2011-01-06 14 views
5

Mi sono comprato un sito Web in cui è ospitato su un server Linux che condivide un indirizzo IP utilizzando cpanel. Il problema è, ora, voglio usare questo codice per caricare un file sul mio sito. Ogni volta che uso l'indirizzo del sito come www.site, riceverò un'eccezione dicendo che l'URL non è valido. Quando uso l'indirizzo IP (poiché si tratta di un server condiviso), non riesco a trovare il mio codice php poiché non so come collegarlo al mio indirizzo.Android, http: come caricare un file su un sito ospitato da un server condiviso?

Qualcuno ... qualcuno sa come collegarmi al mio sito, solo così posso caricare un file xml ?? Ho davvero bisogno di aiuto qui .......

Qualsiasi aiuto sarebbe molto apprezzato in quanto non ho alcuna conoscenza in materia di networking.

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

risposta

1

Su Android è preferibile per reti HTTP più complesse utilizzare la classe HttpClient.

Ecco un esempio di caricamento di file in più parti: http://rapidandroid.org/wiki/HttpUpload

+0

i; ho provato il codice e mettendo nelle httpcomponents apache, il client e il nucleo, ma sto ottenendo i Il tipo di org.apache.james. mime4j.message.SingleBody non può essere risolto. È indirettamente referenziato dai file .class richiesti nell'area del pacchetto. Come lo risolvo? Sto lavorando con l'androide su eclipse e ho provato a cercare una soluzione, ma non ne ho alcuna. – Cid

+0

risolto questo aggiungendo la libreria org.apache.james.mime4j nel mio riferimento – Cid

+0

un nuovo problema ritagliato. Il registro è uscito mostrandomi questo problema, java.lang.noclassdeffounderror: org.apache.http.entity.mime, e ho le librerie, cosa c'è che non va? – Cid

Problemi correlati