gpt4 book ai didi

java - 使用接口(interface)的 ReSTLet 客户端-服务器流式传输

转载 作者:太空宇宙 更新时间:2023-11-04 07:17:09 24 4
gpt4 key购买 nike

我想做类似example posted in restlet's site (first applicaiton)的事情- 有一个区别:

我想使用接口(interface)传输数据 - 不使用原始类型。

我想在客户端和服务器之间定义某种接口(interface),在它们之间传输数据并让reSTLet处理无缝传输数据。

我的想法示例:

interface Streaming {
InputStream startStream(String streamId);
}

当客户端调用时,它开始从输入流读取。服务器接收调用并开始通过创建输入流(例如视频文件或只是一些原始数据)来提供流。 ReSTLet 应该从服务器端的输入流中读取数据,并将数据作为客户端的输入流提供。

知道如何实现这一目标吗?代码示例或链接会很棒。谢谢。

最佳答案

下面是我迄今为止学到的示例代码 - 具有流功能的接口(interface)和客户端-服务器流示例

我还没有向界面添加参数,它只是下载 - 还没有上传。

界面:

public interface DownloadResource {
public ReadableRepresentation download();
}

协议(protocol)接口(interface):(逻辑与技术分离):

public interface DownloadResourceProtocol extends DownloadResource {
@Get
@Override
public ReadableRepresentation download();
}

客户:

ClientResource cr = new ClientResource("http://10.0.2.2:8888/download/");
cr.setRequestEntityBuffering(true);
DownloadResource downloadResource = cr.wrap(DownloadResourceProtocol.class);
// Remote invocation - seamless:
Representation representation = downloadResource.download();
// Using data:
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
IOUtils.copy(representation.getStream(), byteArrayOutputStream);
byte[] byteArray = byteArrayOutputStream.toByteArray();
Log.i("Byte array: " + Arrays.toString(byteArray));

服务器:

public class DownloadResourceImpl extends ServerResource implements DownloadResourceProtocol {
@Override
public ReadableRepresentation download() {
InputStreamChannel inputStreamChannel;
try {
inputStreamChannel = new InputStreamChannel(new ByteArrayInputStream(new byte[]{1,2,3,4,5,6,7,8,9,10}));
return new ReadableRepresentation(inputStreamChannel, MediaType.ALL);
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
}

配置:

public class SampleApplication extends Application {
@Override
public Restlet createInboundRoot() {
Router router = new Router(getContext());
router.attach("/download/", DownloadResourceImpl.class);
return router;
}
}

关于java - 使用接口(interface)的 ReSTLet 客户端-服务器流式传输,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19807560/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com