Записать данные в текстовый файл по URL в Android

Я пишу приложение для Android в Eclipse, в котором мне нужно написать текст в текстовый файл на моем веб-сервере. В 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();  
} 

Но это не работает. Мне просто нужно написать простой текст в существующий текстовый файл на моем веб-сервере. Я знаю, это простая задача, но я пробовал несколько способов и провел некоторое время на Google, пытаясь сделать это, но не работает.. Иногда я получаю ошибки в желтом:

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 включены в манифест. Мои папки на сервере имеют права на запись.

Любая помощь приветствуется... Спасибо

2 ответа

Решение

Вы не можете получить доступ к файлу, обслуживаемому каким-либо сервером, как к ресурсам вашей файловой системы. использование HTTP POST с данными и сделать запись файла сделанным некоторым механизмом сценария как PHP.

Использование AsyncTask требуется также.

Это проблема с реализацией на вашем веб-сервере, а не на Android. Один не просто пишет по HTTP. Вам нужно что-то вроде REST API или специализированного протокола.

Разрешения на запись на сервере означают только то, что текущий пользователь на сервере имеет разрешения на запись в эти папки. Внешние клиенты все еще могут только читать, если у вас нет чего-то вроде PHP-скрипта, который принимает переменную POST с текстом, который вы хотите написать.

Другие вопросы по тегам