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());

doOutputこれを機能させるには、に設定する必要がありますtrue。方法は次のとおりです。

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

私は Java プログラマーですが、別の解決策があります。たぶん、これは誰かにとって役立つでしょう。Web ブラウザで高度なプロキシ設定を確認してください。社内のシステムエンジニアがプロキシ設定を変更していましたが、私は知りませんでした。このエラーにより、3 営業日かかりました。会社で ftp アップロード プロジェクトを作成しているときに、このdoOutputエラーが発生しました。conn.setDoOutput(true)同様のソリューションを追加したり、「50 色合い」を追加したりするなど、あらゆることを試しましたが、どれも私を救ってくれませんでした。しかし、プロキシ設定を変更した後エラーを修正すると、エラーが消え、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 に答える