2013-05-16 77 views
0

我在Eclipse中編寫了一個Android應用程序,其中我需要將一些文本寫入我的Web服務器上的文本文件。在OnCreate()我寫這樣的事情..將數據寫入Android中的URL上的文本文件

try{ 
    String data = "hello"; 
    URL u1 = new URL("http://url.com/script.txt"); 
    URLConnection uc1 = u1.openConnection(); 
    uc1.setDoOutput(true); 
    OutputStreamWriter out = new OutputStreamWriter(uc1.getOutputStream()); 
    out.write(data); 
    out.flush(); 
} 
catch(Exception e) { 
    e.printStackTrace(); 
} 

但它不工作。我只需要在我的Web服務器上的現有文本文件上寫一個簡單的文本。我知道它的一個簡單的任務,但我已經嘗試了多種方法,並在谷歌花了一段時間試圖做到這一點,但不是working..Some時候,我收到錯誤黃色:

05-16 16:22:24.853: W/System.err(29095): android.os.NetworkOnMainThreadException 

05-16 16:22:25.563: W/System.err(29095): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1108) 
... 
... 
... 

我試着在異步也寫着:

private class MyAsyncTask extends AsyncTask<Void, Void, Void> 
    { 

     ProgressDialog mProgressDialog; 
     @Override 
     protected void onPostExecute(Void result) { 
     } 

     @Override 
     protected void onPreExecute() { 

     } 

     @Override 
     protected Void doInBackground(Void... params) { 
      //code comes here..... 
    } 
} 

但沒有什麼工作..我有android.permission.ACCESS_NETWORK_STATE和android.permission.INTERNET在清單中啓用。我在服務器上的文件夾有寫權限。

任何幫助表示讚賞...謝謝

回答

7

您無法訪問某些服務器提供的文件,就像您的文件系統上的資源一樣。 將HTTP POST與數據結合使用,並通過某些腳本引擎(例如PHP)完成文件寫入。需要使用AsyncTask

+0

感謝您的提示...它在下面的線程回答... http:///stackoverflow.com/questions/12031543/write-data-to-a-remote-text-file-in-android – Vinraj

+2

HTTP 1.1定義數據上傳就好了。該方法稱爲'PUT',並在RFC 2616 Sec中有​​詳細說明。 9.6:http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.6 - 添加適當的身份驗證,授權和加密,OP所要求的是完全可行的。 – datenwolf

2

這是您的網絡服務器,而不是Android的實現問題。一個不會簡單地通過HTTP進行寫入。你需要像REST API或專門的協議。

在服務器上寫入權限只意味着服務器上的當前用戶有權寫入這些文件夾。外部客戶端仍然只能閱讀,除非你有像PHP腳本那樣接受帶有你想寫的文本的POST變量。

+1

+1我之前幾秒的正確想法 –

+0

你是對的。感謝您的提示......我在這裏得到了詳細的答案。 http://stackoverflow.com/questions/12031543/write-data-to-a-remote-text-file-in-android – Vinraj