我想知道是否可以在不提供特定文件URL的情况下下载文件
例如,在响应中创建 http请求是文件或文件的内容
我可以下载已经提供确切网址的文件
例如,txt file
但是,我接下来想要的是保护该网址并将其设为私有。
如果有其他方式,请解释我
答案 0 :(得分:0)
有一种方法可以在不使用http请求的情况下促进服务器 - 客户端通信,称为Apache Thrift。要实现您提出的目标 - “从服务器下载文件而不提供文件网址”,您可以执行以下操作:
下载Thrift,构建并安装Apache Thrift编译器
您可以按照official website上的步骤操作。
编写.thrift文件(我的例子中,我把它命名为“test.thrift”)
对于您的示例,您可以定义如下:
service MyServer {
binary getFileFromServer()
}
然后,打开终端并运行
thrift --gen java test.thrift
我将获得一个“MyServer.java”文件,服务器/客户端都应包含此文件以供实施。假设您的服务器端已准备好以二进制文件提供文件数据。在Android应用程序中,您只需指定用于连接服务器的套接字,协议,传输,主机和端口。如果您想从服务器获取文件,只需使用您的Client对象调用“getFileFromServer()”,那么您可以获取文件的byte []。例如:
public TSocket socket = new TSocket(your_host, your_port);
public TFramedTransport transport = new TFramedTransport(socket);
public TBinaryProtocol protocol = new TBinaryProtocol(transport);
public Client myClient = new Client(protocol);
调用线程从服务器获取文件:
new Thread(new Runnable() {
@Override
public void run(){
// this block should be wrapped with try/catch
transport.open();
byte[] myFileInByteArray = myClient.getFileFromServer();
// your custom function for decoding
decodeByteArrayIntoFile(myFileInByteArray);
transport.close();
}
}).start();
以上是我能想到的唯一一种从服务器下载文件而不提供文件URL的方法,但您仍然需要先连接到服务器。希望这可以提供帮助。