我正在Eclipse中编写一个Android应用程序,我需要将一些文本写入我的web服务器上的Text文件。在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服务器上的现有Text文件上写一个简单的文本。我知道这是一个简单的任务,但我已经尝试了几种方法,并花了一些时间在谷歌尝试这样做但不工作..有时我收到黄色错误:
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。我在服务器中的文件夹有写权限。
感谢任何帮助......谢谢
答案 0 :(得分:7)
您无法访问某些服务器提供的文件,例如文件系统上的资源。
将HTTP POST
与数据一起使用,并通过某些脚本引擎(如PHP)完成文件编写。
还需要使用AsyncTask
。
答案 1 :(得分:2)
这是在您的网络服务器上实施的问题,而不是Android。一个不是简单地通过HTTP写。您需要REST API或专用协议之类的东西。
在服务器上写入权限只意味着服务器上的当前用户有权写入这些文件夹。外部客户端仍然只能读取,除非您有类似PHP脚本的东西接受带有您要编写的文本的POST变量。