2

J'ai un problème avec l'appel de l'adaptateur MobileFirst de mon application. Si j'utilise des documents swagger ou un facteur pour tester la méthode de l'adaptateur, cela fonctionne. Malheureusement de l'application aperçu, je reçois un message:MobileFirst - adaptateur d'appel - ERR_CONNECTION_RESET

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

Je ne comprends pas pourquoi la demande à l'adaptateur de mon application est envoyée au port 6015. Au cours des essais (fanfaronnades et postier) je 9080, peut-être est le problème, mais je ne sais pas comment changer le port cible d'application de 6015 à 9080.

adaptateur 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" /> 

mise en œuvre:

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); 
} 

et appel adaptateur:

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

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

04/06/2017 modifié:
En outre, je l'ai remarqué, que, au moment de appel d'adaptateur, j'obtiens cette erreur dans la console de previewCo Fichier rdova.js. il ressemble à la variable req.url est indéfini:

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) 

Répondre

0

J'ai résolu un problème. Ma version de NodeJS ne prend pas en charge la méthode javascript String.prototype.startsWith. J'ai donc ajouté cette méthode pour previewCordova.js fichier:

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

versions plus récentes de NodeJS avaient mis en œuvre la méthode startsWith, donc NodeJS mise à jour devrait résoudre trop problème.

2

Mobilefirst App Preview se connecte au serveur MFP via un proxy qui fonctionne sur le port 6015 et le comportement qui vous fait face est normal, son rien à voir avec le port.

ERR_CONNECTION_RESET Une erreur est due au navigateur & qui ne provient pas de Mobilefirst Server. Essayez de faire une demande avec un navigateur différent et essayez également en effaçant les données de navigation/cache.

+0

ok, j'ai essayé dans mozilla et erreur disparue, mais l'appel de l'adaptateur ne fonctionne toujours pas. est-il possible que le proxy mentionné ne démarre pas correctement avec Mobilefirst App Preview? Je l'ai commencé avec la commande standard: aperçu de l'application _mfpdev android, ios, windows --type mbs --noprompt --pid_ – robr

+0

@robr Passez par [ce tutoriel] (https://mobilefirstplatform.ibmcloud.com/tutorials/fr /foundation/8.0/application-development/using-mobilefirst-cli-to-manage-mobilefirst-artifacts/#preview-a-cordova-application) pour apprendre à exécuter des applications en mode de prévisualisation. Assurez-vous également que l'appel de l'adaptateur de votre application fonctionne correctement avec Cordova et si cela ne résout pas votre problème, veuillez partager la réponse d'erreur que vous obtenez lorsque vous appelez le serveur en mode de prévisualisation. –

+0

Je sais peut-être ici des pailles, mais il est également possible que ce type d'erreur soit dû à des règles de pare-feu installées sur votre machine locale - vous pouvez avoir des règles pour empêcher toute connexion au port 6015 localhost. Ce n'est qu'une supposition, mais c'est quelque chose qui pourrait valoir la peine d'être examiné. – patbarron