2

我的應用程序調用MobileFirst適配器時出現問題。 如果我使用swagger文檔或郵遞員來測試適配器方法,它的工作原理。 不幸的是從應用程序的預覽,我收到消息:MobileFirst - 通話適配器 - ERR_CONNECTION_RESET

http://localhost:6015/mfp/api/adapters/ServiceAdapter/login?params=%5Btest%2C%20test123%5D網:: ERR_CONNECTION_RESET

我不明白,爲什麼要求從我的應用程序適配器被轉發到端口6015在測試過程中我用9080(招搖和郵遞員),不知是不是這個問題,但我不知道如何改變應用程序目標端口從6015到9080

適配器XML:

<mfp:adapter name="ServiceAdapter" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:mfp="http://www.ibm.com/mfp/integration" 
     xmlns:http="http://www.ibm.com/mfp/integration/http"> 

<displayName>ServiceAdapter</displayName> 
<description>ServiceAdapter</description> 
<connectivity> 
    <connectionPolicy xsi:type="http:HTTPConnectionPolicyType"> 
     <protocol>http</protocol> 
     <domain>localhost</domain> 
     <port>53873</port> 
     <connectionTimeoutInMilliseconds>30000</connectionTimeoutInMilliseconds> 
     <socketTimeoutInMilliseconds>30000</socketTimeoutInMilliseconds> 
     <maxConcurrentConnectionsPerNode>50</maxConcurrentConnectionsPerNode> 
    </connectionPolicy> 
</connectivity> 

<procedure name="login" secured="false" /> 

實現:

function login(login, pass) { 
    path = 'token'; 
    var input = { 
     method : 'post', 
     returnedContentType : 'json', 
     path : path, 
     headers : { 
      'Content-Type' : 'application/x-www-form-urlencoded' 
     }, 
     body : { 
      contentType : 'application/x-www-form-urlencoded', 
      content : 'username=' + login + '&password=' + pass + '&grant_type=password' 
     } 
    }; 
    return MFP.Server.invokeHttp(input); 
} 

和轉接電話:

function Login() { 
    var resourceRequest = new WLResourceRequest(
      "/adapters/ServiceAdapter/login", 
      WLResourceRequest.GET 
    ); 

    resourceRequest.setQueryParameter("params", "[" + $("#log").val() + ", " + $("#pass").val() + "]"); 
    resourceRequest.send().then(LoginSuccess, LoginFailure); 
} 

編輯2017年4月6日:
另外,我注意到,在這的時刻適配器調用,我得到這個錯誤控制檯從 previewCo rdova.js文件。它看起來像變量 req.url未定義:

C:\...\npm\node_modules\mfpdev-cli\node_modules\mdo-app-preview\lib\previewCordova.js:579 
    if(!req.url.startsWith('/')) { 
       ^
TypeError: undefined is not a function 
    at Server.<anonymous> (C:\..\npm\node_modules\mfpdev-cli\node_modules\mdo-app-preview\lib\previewCordova.js:579:17) 
    at Server.emit (events.js:110:17) 
    at HTTPParser.parserOnIncoming [as onIncoming] (_http_server.js:491:12) 
    at HTTPParser.parserOnHeadersComplete (_http_common.js:111:23) 
    at Socket.socketOnData (_http_server.js:343:22) 
    at Socket.emit (events.js:107:17) 
    at readableAddChunk (_stream_readable.js:163:16) 
    at Socket.Readable.push (_stream_readable.js:126:10) 
    at TCP.onread (net.js:538:20) 

回答

0

我已經解決了一個問題。我的版本NodeJS不支持javascript String.prototype.startsWith方法。所以我加入這個方法來previewCordova.js文件:

if (!String.prototype.startsWith) { 
    String.prototype.startsWith = function(searchString, position) { 
    position = position || 0; 
    return this.indexOf(searchString, position) === position; 
    }; 
} 

較新版本的NodeJS已實施startsWith方法,所以NodeJS升級應該解決的問題太多。

2

Mobilefirst應用預覽通過運行在端口6015的代理連接到MFP服務器,你面臨的行爲是正常的,它沒有任何關係的端口。

ERR_CONNECTION_RESET錯誤是由於瀏覽器&不是來自Mobilefirst Server。

嘗試使用不同的瀏覽器發出請求,並嘗試清除瀏覽數據/緩存。

+0

好的,我試圖在Mozilla中,錯誤消失,但適配器調用仍然無法正常工作。是否有可能,提到的代理沒有正確啓動Mobilefirst App Preview?我已經開始使用標準命令:_mfpdev app preview android,ios,windows --type mbs --noprompt --pid_ – robr

+0

@robr閱讀[本教程](https://mobilefirstplatform.ibmcloud.com/tutorials/en /foundation/8.0/application-development/using-mobilefirst-cli-to-manage-mobilefirst-artifacts/#preview-a-cordova-application)瞭解如何以預覽模式運行應用程序。另外請確保您的應用程序的適配器調用在cordova中正常工作,並且如果它不能解決您的問題,請分享您在預覽模式下調用服務器時獲得的錯誤響應。 –

+0

我可能在這裏抓住了吸管,但也有可能這種錯誤可能是由於在本地機器上設置了防火牆規則 - 您可能有適當的規則來阻止任何東西連接到本地主機上的端口6015。這只是一個猜測,但它可能值得研究。 – patbarron

相關問題