WSO2 APi 管理员响应代码 0

WSO2 APi Manager Response Code 0

我正在尝试在现有 micro-services 项目上使用 WSO2 API Manager 1.10.0,并按照 WSO2 教程使用 REST APIs。

我已经在我的计算机上安装了它以及我的应用程序的副本,并配置了 AM 来管理对我的资源的请求(GET、POST 和 DELETE),但我总是获得 "Response code 0"响应 Header

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

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

我的 API 使用 header 中的令牌对通过的用户进行身份验证,因此我实现了一个没有身份验证的虚拟 API 但我仍然遇到同样的问题。

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

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

  1. 如果您有兴趣继续使用云版本,可以向他们寻求帮助。您可以发送支持请求,云团队会提供帮助。

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

如果curl没有问题,可以查看日志看有没有打印错误。还有一些问题:

  1. 您的后端服务是否通过 http 或 https 公开?
  2. 如果它是 https,那么如果它的证书不是 CA 签名的证书,APIManager 将在握手期间失败。如果是这样,您必须将证书添加到 api managers client-truststore.jks
  3. 在云场景中,您的后端应该可以从 Internet 访问,证书故事也适用于云。

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

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

您也可以使用 firebug 等工具了解问题并检查请求。 (会显示未连接AM的错误)

终于我找到了问题:API 管理器不接受纯文本响应,使用 JSON 响应解决了问题。

使用其他媒体类型,例如 XML 或 TEXT/HTML,它报告 406,文本为纯文本 returns 错误 0。