Java: при попытке загрузить файл JAR с сервера: исключение в потоке "main" java .io.IOException: сервер вернул код ответа HTTP: 403 для URL - PullRequest
0 голосов
/ 24 февраля 2020

Я пытаюсь загрузить файл Jar с URL-адреса. Мой код выглядит следующим образом:


import java.io.FileOutputStream;
import java.io.IOException;

import java.io.PrintWriter;

import java.net.URL;
import java.nio.channels.Channels;
import java.nio.channels.ReadableByteChannel;




public class Update {



    @SuppressWarnings({ "resource" })
    public Update() throws IOException {

        System.setProperty("http.agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.75 Safari/535.7");

        System.out.print("Update found, downloading...");




            URL tariff = new URL("https://someurl/license/Updated" + Main.newupdate + ".jar");

              ReadableByteChannel tar = Channels.newChannel(tariff.openStream());
              FileOutputStream fos = new FileOutputStream("Updated.jar");
              fos.getChannel().transferFrom(tar, 0, 1<<24);
...

Однако я всегда получаю сообщение об ошибке: Exception in thread "main" java.io.IOException: Server returned HTTP response code: 403 for URL

Дополнительная информация: Я владею сервером, на котором расположен файл. Можно ли изменить мои настройки xamp, чтобы предотвратить эту ошибку?

Я попытался настроить пользовательский агент, но он все еще не работает.

1 Ответ

0 голосов
/ 25 февраля 2020

Я решил проблему, изменив код на это:

URL url = new URL("https://someurl.io/license/Updated" + Main.newupdate + ".jar");
            String fileName = "Updated.jar";

            URLConnection urlConn = url.openConnection();
            urlConn.addRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
            OutputStream out = new BufferedOutputStream(new FileOutputStream(fileName));
            String contentType = urlConn.getContentType();

            System.out.println("contentType:" + contentType);

            System.setProperty("http.agent", "Chrome");
            InputStream in = urlConn.getInputStream();
            byte[] buffer = new byte[1024];
            int numRead;
            while ((numRead = in.read(buffer)) != -1) {
                out.write(buffer, 0, numRead);
            }
            if (in != null) {
                in.close();
            }
            if (out != null) {
                out.close();
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...