首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何显式指定由RDFDataMgr.loadModel(url)发送的Accept?

如何显式指定由RDFDataMgr.loadModel(url)发送的Accept?
EN

Stack Overflow用户
提问于 2016-05-19 07:29:48
回答 2查看 308关注 0票数 1

我们需要使用buggy的Http内容协商来查询服务器(它不理解Accept中的Q参数)。因此,我们需要将查询发送到

Accept:application/rdf+xml

而不是耶娜的默认

Accept: text/turtle,application/n-triples;q=0.9,application/rdf+xml;q=0.7,application/trig,application/n-quads;q=0.9,text/x-nquads;q=0.8,application/x-trig;q=0.7,application/ld+json;q=0.6,*/*;q=0.5

下面是我们当前用于设置Jena的Http处理的Java代码:

代码语言:javascript
复制
static {
    HttpOp.setDefaultHttpClient(createHttpClient(1000, 4000));
}

protected static HttpClient createHttpClient(final int connectTimeout, final int readTimeout) {
        final RequestConfig requestConfig = RequestConfig.custom()
                .setConnectTimeout(connectTimeout)
                .setSocketTimeout(readTimeout)
                .setContentCompressionEnabled(true)
                .setRedirectsEnabled(true)
                .build();

        final HttpHost gndHost = new HttpHost("host.net", 80);
        final PoolingHttpClientConnectionManager connMgr = new PoolingHttpClientConnectionManager();
        connMgr.setDefaultMaxPerRoute(10);
        connMgr.setMaxTotal(50);
        connMgr.setMaxPerRoute(new HttpRoute(gndHost), 2);

        return HttpClientBuilder.create()
                .setConnectionManager(connMgr)
                .setDefaultRequestConfig(requestConfig)
                .build();
    }

是否可以更改这个常规设置,以便对所有请求使用HttpQuery.setAccept("application/rdf+xml")?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-19 09:06:58

函数QueryExecutionFactory.sparqlService返回一个QueryExecution对象,它实际上是一个QueryEngineHTTP,它有set*ContentType方法。

如果您想进入真正详细的控件,可以将HttpOp直接与将输入流传递给RDFDataMgrHttpResponseHandler一起使用。

票数 2
EN

Stack Overflow用户

发布于 2016-05-19 13:35:06

此代码完成了以下工作:

代码语言:javascript
复制
private Model fetchRemoteData(final String uri, final Boolean ignoreErrors) throws HttpException, TitleDataInvalidException {
        try {
            final Model rdfModel;
            if (uri.startsWith("http://d-nb.info")) {
                final Model tmpModel = ModelFactory.createDefaultModel();
                final TypedInputStream is = HttpOp.execHttpGet(uri, "application/rdf+xml");
                tmpModel.read(is, null);
                rdfModel = tmpModel;
            } else {
                rdfModel = RDFDataMgr.loadModel(uri);
            }
            return rdfModel;
        } catch (RiotException ex) {
    ...
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37316642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档