Записать данные в текстовый файл по 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 с текстом, который вы хотите написать.