调用 Worklight 适配器 http 错误

Posted

技术标签:

【中文标题】调用 Worklight 适配器 http 错误【英文标题】:Invoke Worklight Adapter http error 【发布时间】:2014-03-10 10:45:43 【问题描述】:

我已经用这个方法创建了一个适配器:

function getLocation(gpsLat, gpsLong) 
path = "/maps/api/geocode/json?latlng=" + gpsLat + "," + gpsLong + "&sensor=false";
var input = 
method : 'get',
returnedContentType : 'json',
path : path
;
return WL.Server.invokeHttp(input);

适配器配置是这样的:

<displayName>GPSLocator</displayName>
    <description>GPSLocator</description>
    <connectivity>
        <connectionPolicy xsi:type="http:HTTPConnectionPolicyType">
            <protocol>http</protocol>
            <domain>maps.googleapis.com</domain>
            <port>80</port> 
            <!-- Following properties used by adapter's key manager for choosing specific certificate from key store  
            <sslCertificateAlias></sslCertificateAlias> 
            <sslCertificatePassword></sslCertificatePassword>
            -->
            <proxy>
                <protocol>http</protocol>
                <domain>15.1.0.111</domain>
                <port>8080</port>
            </proxy>
        </connectionPolicy>
        <loadConstraints maxConcurrentConnectionsPerNode="2" />
    </connectivity>

    <procedure name="getLocation" />

当我右键单击并运行 Invoke WL Adapter 我得到这个错误:


   "errors": [
      "Runtime: Http request failed: org.apache.http.conn.HttpHostConnectException: Connection to http:\/\/maps.googleapis.com:80 refused"
   ],
   "info": [
   ],
   "isSuccessful": false,
   "warnings": [
   ]

如果我通过浏览器在谷歌地图中运行请求,例如: https://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&sensor=false

然后我得到正确的响应。所以问题在于从 WL 调用它。

我正在使用 Worklight Studio 6.1 我也可以正常访问我的控制台并查看已部署的应用程序,因此我的服务器已启动并正常运行。

有什么建议吗?

【问题讨论】:

【参考方案1】:

我认为这与您使用以下设置运行的代理有关:

<proxy> <protocol>http</protocol> <domain>15.1.0.111</domain> <port>8080</port> </proxy>

我能够在没有该代理的情况下成功运行上述适配器。您可能需要查看您的代理配置。此外,您的请求通过适配器内部的 http,但在您的示例地址中通过 https:

https://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&sensor=false

【讨论】:

确认它可以在没有代理设置的情况下工作。验证这些设置。

以上是关于调用 Worklight 适配器 http 错误的主要内容,如果未能解决你的问题,请参考以下文章

从非 Worklight 应用程序调用 Worklight 适配器

IBM Worklight:调用 Worklight 适配器时没有 SessionManager

IBM worklight - “找不到适配器,过程调用错误”

IBM Worklight - 调用适配器过程时缺少驱动程序错误

当我使用移动 Web 应用程序调用 ibm worklight 适配器时出现错误 200

无法从 Worklight Liberty 服务器中的 HTTP 适配器调用 java 类