0

我正在尝试在现有的具有 REST API 的微服务项目上使用 WSO2 API Manager 1.10.0,遵循 WSO2 教程。

我已经在我的计算机上安装了它以及我的应用程序的副本,并将 AM 配置为管理对我的资源的请求(GET、POST 和 DELETE),但我总是获得带有响应标头的“响应代码 0”

{
   "error": "no response from server"
}

尝试使用 Advanced REST Client 联系我的应用程序时,我得到了正确结果的 200。

我的 API 在标头中使用令牌来验证通过的用户,所以我实现了一个没有身份验证的虚拟 API,但我仍然遇到同样的问题。

我也用我们的测试服务器尝试了云版本,但仍然获得相同的结果。我找到了本指南http://wso2.com/blogs/cloud/video-setting-up-custom-url-for-api-store-and-gateway/但我不知道这是否可以解决本地主机中的问题。

4

3 回答 3

1

在WSO2 API Cloud中设置自定义 url无济于事。那是为了不同的目的。你可以做两件事。

  1. 如果您有兴趣继续使用云版本,您可以从他们那里获得帮助。您可以发送支持请求,云团队将提供帮助。

  2. 您可以对本地实例进行故障排除。这样做时,首先,尝试通过 curl 调用您的 api 并查看它是否得到响应。有时,您的 api 可以正常工作,但由于某些原因,结果可能无法到达 api 控制台。

如果 curl 工作正常,您可以检查日志以查看是否打印了任何错误。还有一些问题:

  1. 您的后端服务是通过 http 还是 https 公开的?
  2. 如果是 https,那么如果它的证书不是 CA 签名的,那么 API Manager 将在握手期间失败。如果是这样,您必须将证书添加到 api manager client-truststore.jks
  3. 在云场景中,您的后端应该可以从 Internet 访问,并且证书故事也适用于云。
于 2016-07-21T17:38:56.707 回答
1

您是否尝试使用 swagger 控制台(或任何 Web 应用程序)访问 api。您可能会遇到此问题的原因有几个。一种可能是浏览器中未安装证书。

如果发生这种情况,您应该会在 api 管理器控制台中看到一些错误日志(与 CA 相关的内容未找到)。首先,您可以复制后端 url(swagger 控制台显示它用于发送请求的 url)并将其粘贴到新的浏览器窗口并将证书安装到浏览器。

您还可以通过使用诸如 firebug 之类的工具来了解该问题并检查请求。(会显示未连接AM的错误)

于 2016-07-22T06:26:29.790 回答
1

最后我发现了问题:API Manager 不接受纯文本响应,使用 JSON 响应解决了问题。

使用其他媒体类型(例如 XML 或 TEXT/HTML)会报告 406,使用纯文本会返回错误 0。

于 2016-07-26T12:01:28.747 回答