12

我在这里问了一个问题,感谢一位用户,我已经解决了我的问题。这是我目前正在使用的代码。

void UploadToDatabase() throws MalformedURLException, IOException {
          URL website = new URL("http://mk7vrlist.altervista.org/databases/record_file.txt");
          WritableByteChannel rbc = Channels.newChannel(website.openConnection().getOutputStream());

          FileOutputStream fos;
          fos = new FileOutputStream("record_file.txt");
          fos.getChannel().transferTo(0, Long.MAX_VALUE, rbc);
          fos.close();
     }

record_file.txt如上所示,我的目标是在特定的 Web 链接上上传文件。但是,当我尝试运行此代码时,NetBeans 给了我这个错误:

java.net.ProtocolException: cannot write to a URLConnection if doOutput=false - call setDoOutput(true)

我阅读了一些关于此的内容,并在声明该rbc变量之后添加了以下代码。

 URLConnection urlc = website.openConnection();
 urlc.setDoOutput(true);

顺便说一句,我总是有同样的错误。你可以帮帮我吗?

4

3 回答 3

25

问题出在这一行:

WritableByteChannel rbc = Channels.newChannel(website.openConnection().getOutputStream());

您需要设置doOutputtrue才能正常工作。就是这样:

URLConnection urlc = website.openConnection();
urlc.setDoOutput(true);
WritableByteChannel rbc = Channels.newChannel(urlc.getOutputStream());
于 2013-07-29T19:43:09.960 回答
3

对我来说,这是由于使用标题的方式不正确,比如

HttpEntity<String> entity = new HttpEntity("parameters", headers); //Issue was here

我刚做了

 HttpEntity<String> entity = new HttpEntity(headers); //Fixed Issue

在这里查看其他详细信息

于 2018-08-20T07:17:46.163 回答
0

我是一名 Java 程序员,我有不同的解决方案。也许这对某人有用。只需在您的网络浏览器中查看您的高级代理设置。我们公司的系统工程师更改了代理设置,但我不知道。这个错误花了我 3 个工作日。我在公司编写 ftp 上传项目时遇到了这个doOutput错误。我尝试了所有方法,例如添加conn.setDoOutput(true)类似解决方案或“五十种色调”,但没有一个能救我。但是,在我更改了代理设置之后为了纠正错误,错误消失了,现在我可以使用 java 中的 urlConnection 通过 ftp 上传我的文件。我使用下面链接中的代码进行上传过程,除了主机、端口、用户和密码之外没有添加任何内容。 http://www.ajaxapp.com/2009/02/21/a-simple-java-ftp-connection-file-download-and-upload/

于 2015-05-21T07:26:56.077 回答