0

我正在 Eclipse 中编写一个 Android 应用程序,其中我需要将一些文本写入我的网络服务器上的文本文件。在 onCreate() 我正在写这样的东西..

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 服务器上的现有文本文件中写入一个简单的文本。我知道这是一项简单的任务,但我尝试了几种方法,并在谷歌上花了一些时间试图做到这一点但没有奏效。有时我收到黄色错误:

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)
...
...
...

我也尝试用 Async 编写:

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。我在服务器中的文件夹有写权限。

任何帮助表示赞赏...谢谢

4

2 回答 2

7

您无法访问某些服务器提供的文件,就像文件系统上的资源一样。与数据一起使用HTTP POST,并由一些脚本引擎(如 PHP)完成文件写入。

的使用AsyncTask也是必需的。

于 2013-05-16T11:14:09.453 回答
2

这是在您的网络服务器上实现的问题,而不是 Android。不能简单地通过 HTTP 进行编写。您需要诸如 REST API 或专用协议之类的东西。

服务器上的写入权限仅意味着服务器上的当前用户有权写入这些文件夹。外部客户端仍然只能读取,除非您有类似 PHP 脚本的东西,该脚本接受带有您要编写的文本的 POST 变量。

于 2013-05-16T11:13:45.503 回答