遍历分页 fhir 响应

Iterating over a paged fhir response

我 运行 对 hapi fhir 数据库进行了查询,该数据库向我返回了分页结果。我在 java 中使用 hapi base 来实际进行搜索,根据此处的文档:http://hapifhir.io/doc_rest_client.html

    Bundle bundle = client.search().forResource(Basic.class).returnBundle(ca.uhn.fhir.model.dstu2.resource.Bundle.class).execute();
    do {

        for (Entry entry: bundle.getEntry())
            System.out.println(entry.getFullUrl());

        if (bundle.getLink(Bundle.LINK_NEXT) != null)
            bundle = client.loadPage().next(bundle).execute();
        else
            bundle = null;
    }
    while (bundle != null);

代码 运行 获取第一个包,并按预期打印出 url,但是当它尝试执行下一个包时,我得到一个 ConnectionException 'Connection refused: connect'。

服务器似乎仍然有响应,但是我可以重新运行我的程序并返回完全相同的结果。

知道为什么连接会被拒绝吗?当我尝试从邮递员手动 运行 它时,我遇到了类似的问题。

你所做的看起来确实是正确的。如果您手动执行搜索(例如,使用浏览器或邮递员或其他任何方式),下一个 link 会是什么样子?如果您也直接在浏览器中使用 link 是否有效?

例如,如果我 运行 我机器上的本地 CLI 并执行搜索,我会在响应中看到以下内容:

"link": [
   {
     "relation": "self",
     "url": "http://localhost:8080/baseDstu3/_history"
},
{
  "relation": "next",
  "url": "http://localhost:8080/baseDstu3?_getpages=d8454866-624d-4bb3-b7a0-0858e4870e7e&_getpagesoffset=10&_count=10&_pretty=true&_bundletype=history"
}
 ],

如果我将下一个 link (http://localhost:8080/baseDstu3?_getpages=d8454866-624d-4bb3-b7a0-0858e4870e7e&_getpagesoffset=10&_count=10&_pretty=true&_bundletype=history) 插入浏览器,我将获得下一页。

你能试试看效果如何吗?

以防万一有人无意中发现了这一点。我正在进行某种重定向(由我的团队的另一名成员设置)。基本上我的基础 url 是 localhost:8080,但下一个地址返回为 localhost:1080(我不完全理解为什么)。

他更改了服务器中的配置以使其不重定向。