Java 如何为应用程序/x-octet-stream接受头使用Rest Get注释

Java 如何为应用程序/x-octet-stream接受头使用Rest Get注释,java,http,rest,get,restlet,Java,Http,Rest,Get,Restlet,我希望能够根据GET请求头中的Accept类型调用某个方法。目前,我的资源类中有以下内容: import org.restlet.resource.Get; @Get("json") public Representation getJson(Variant variant) throws Exception{ return new StringRepresentation("json"); } @Get("xml") public Representation getXml(Var

我希望能够根据GET请求头中的
Accept
类型调用某个方法。目前,我的资源类中有以下内容:

import org.restlet.resource.Get;

@Get("json")
public Representation getJson(Variant variant) throws Exception{
    return new StringRepresentation("json");
}

@Get("xml")
public Representation getXml(Variant variant) throws Exception {
    return new StringRepresentation("xml");
}

@Get("x-octet-stream")
public Representation getFile(Variant variant) throws Exception {
    return new StringRepresentation("octet-stream");
}
我可以使用http-GET成功调用方法
getJson()
getXml()
,将
Accept
头分别设置为
application/json
application/xml
。当我使用
Accept
头发出GET作为
application/x-octet-stream
时,调用
getJSon()
方法,而不是用
x-octet-stream
注释的方法。你知道为什么吗?和/或如何调用
getFile()
方法


Rest是否只允许对方法入口点使用
json
xml
?是否有已识别类型的列表?我已经在网站上看过了,但是没有任何类似的列表。谢谢

我相信
@Get
注释使用“文件扩展名”在应用程序的
MetadataService
对象中查找方法。有关默认支持的“文件扩展名”列表,请参见此类的JavaDoc(
addCommonExtensions()

作为默认的“捕获所有”媒体类型,应用程序/八位字节流及其压缩版本都没有默认映射。但是,您还可以添加任意数量的自定义映射和
MediaType
实例。我通常会在我的应用程序设置中这样做,例如:

public Application(final Context context)
{
    super(context);

    getMetadataService().addExtension("html", MediaType.TEXT_HTML, true);
}

完整性:如果您正试图从光盘下载预生成的文件,您可能还对使用目录类感兴趣。

我相信
@Get
注释使用“文件扩展名”在应用程序的
MetadataService
对象中查找该方法。有关默认支持的“文件扩展名”列表,请参见此类的JavaDoc(
addCommonExtensions()

作为默认的“捕获所有”媒体类型,应用程序/八位字节流及其压缩版本都没有默认映射。但是,您还可以添加任意数量的自定义映射和
MediaType
实例。我通常会在我的应用程序设置中这样做,例如:

public Application(final Context context)
{
    super(context);

    getMetadataService().addExtension("html", MediaType.TEXT_HTML, true);
}

为了完整性:如果您正试图从光盘下载预生成的文件,您可能还对使用目录类感兴趣。

是的,这是可行的。你怎么知道这是要采取的方法?我不确定我是如何在自己的研究中发现这一点的。老实说,我不记得从1.1.x版开始我就一直在使用restlet,我认为这可能是从那时起随着库的发展而发展的。我已经有一段时间没有仔细查看这方面的文档了。文档的发展速度可能不够快,无法跟上。javadocs:*将默认语言设置为language.ENGLISH\u US,将默认编码设置为encoding.IDENTITY(无编码),将默认媒体类型设置为MediaType.APPLICATION\u OCTET\u STREAM。它还调用addCommonExtensions()方法。你怎么知道这是要采取的方法?我不确定我是如何在自己的研究中发现这一点的。老实说,我不记得从1.1.x版开始我就一直在使用restlet,我认为这可能是从那时起随着库的发展而发展的。我已经有一段时间没有仔细查看这方面的文档了。文档的发展速度可能不够快,无法跟上。javadocs:*将默认语言设置为language.ENGLISH\u US,将默认编码设置为encoding.IDENTITY(无编码),将默认媒体类型设置为MediaType.APPLICATION\u OCTET\u STREAM。它还调用addCommonExtensions()方法。