使用Java将文本数据传输到Web服务器
问题描述:
我正在尝试使用HttpURLConnection.getOutputStream()写入我的Web服务器上的文本文件。我已经在两台不同的服务器上试过了,但没有成功使用Java将文本数据传输到Web服务器
我已经添加了一个FileWriter来测试InputStream,并且该文件是在本地目录中正确创建的,但即使关闭了所有密码保护,Web服务器目录中也没有显示任何内容。
任何帮助将不胜感激。
URL url;
try {
url = new URL("http://www.myWebsite.com/myFile.txt");
HttpURLConnection urlConnection = null;
try {
urlConnection = (HttpURLConnection) url.openConnection();
try {
urlConnection.setDoOutput(true);
urlConnection.setDoInput(true);
OutputStream in = new BufferedOutputStream(urlConnection.getOutputStream());
InputStream fin1;
try {
fin1 = new FileInputStream(Environment.getExternalStorageDirectory() + "/fileToRead.txt");
FileWriter fWriter = new FileWriter(Environment.getExternalStorageDirectory() + "/fileToWrite.txt");
int data = fin1.read();
while(data != -1) {
fWriter.write(data);
in.write(data);
data = fin1.read();
}
fWriter.flush();
fWriter.close();
fin1.close();
in.flush();
in.close();
} catch (FileNotFoundException e31) {
// TODO Auto-generated catch block
} catch (IOException e) {
// TODO Auto-generated catch block
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally {
urlConnection.disconnect();
}
} catch (IOException e4) {
// TODO Auto-generated catch block
e4.printStackTrace();
}
} catch (MalformedURLException e4) {
// TODO Auto-generated catch block
e4.printStackTrace();
}
答
您必须调用urlConnection上的getInputStream()以获取输出流以将套接字刷新到远程服务器。
答
您正赶上IOException异常(右后IOException异常),但没有做任何事的。至少打印堆栈跟踪。
答
你也可以使用Apache的HTTP客户端http://hc.apache.org/httpcomponents-client-ga/index.html
远远高于获得URLConnection的工作更容易。
我在代码中没有看到与身份验证相关的任何内容。这不是让你觉得奇怪吗? – 2011-02-05 03:20:48
您在日志中看到什么类型的错误消息?我建议你将日志级别设置为DEBUG,并在运行此代码时观察它们。此外,该代码是否在您尝试将文件写入该文件的同一台服务器上?另外,`myFile.txt`,`fileToRead.txt`和`fileToWrite.txt`有什么区别? – jmort253 2011-02-05 03:24:19