如何通过Java从URL下载和读取下载的文件
我想用Java在两个URL之间创建一个连接。从一个URL中,我应该从.docx文件中读取Java必须从URL下载的信息,然后我应该将这些信息发送到另一个URL。我试图通过以下方式阅读.docx:如何通过Java从URL下载和读取下载的文件,java,Java,我想用Java在两个URL之间创建一个连接。从一个URL中,我应该从.docx文件中读取Java必须从URL下载的信息,然后我应该将这些信息发送到另一个URL。我试图通过以下方式阅读.docx: import java.io.*; import java.net.*; import java.util.*; import java.nio.*; public class CheckList { public static void main(String[] args)throws
import java.io.*;
import java.net.*;
import java.util.*;
import java.nio.*;
public class CheckList {
public static void main(String[] args)throws Exception {
String FILE = "https://exampleurl.com/download/2037";
byte[] b = new byte[1];
String username = "myusername";
String password = "mypassword";
Authenticator.setDefault(new MyAuthenticator(username, password));
URL url = new URL(FILE);
InputStream content = (InputStream) url.getContent();
try{
BufferedReader in = new BufferedReader(new InputStreamReader(content));
String str;
while ((str = in.readLine()) != null) {
System.out.println(str);
}
}catch(IOException ex){ex.printStackTrace();}
}
static class MyAuthenticator extends Authenticator {
private String login, password;
public MyAuthenticator(String user, String pass) {
login = user;
password = pass;
}
protected PasswordAuthentication getPasswordAuthentication() {
System.out.println("Requesting Host : " + getRequestingHost());
System.out.println("Requesting Port : " + getRequestingPort());
System.out.println("Requesting Prompt : " + getRequestingPrompt());
System.out.println("Requesting Protocol: "
+ getRequestingProtocol());
System.out.println("Requesting Scheme : " + getRequestingScheme());
System.out.println("Requesting Site : " + getRequestingSite());
return new PasswordAuthentication(login, password.toCharArray());
}
}
}
但不幸的是,它只读取网站的javaScript代码(用户必须登录的第一个页面)。有人能给我一个解决方案吗?这可能是一个获取正确URL的问题-javascript可以动态生成该URL并发出请求。一种方法是使用您最喜欢的浏览器的开发/调试模式,查看实际请求的URL。选择一个请求docx文件的类。我不太了解Authenticator类,但它不可能用于填写远程网站显示的自定义表单以进行身份验证。它可能用于代理/防火墙所需的网络身份验证,或者用于基本身份验证,但不用于自定义的基于web的身份验证。尤其是不使用JavaScript的。