如何在 cordova 应用程序中使用 POST 和 javascript 适配器?

How to use POST with javascript adapter from a cordova app?

我有一个现有的工作 javascript 适配器在我本地机器上的 Mobile Foundation 8.0 beta 中执行 POST 请求并迁移到 MobileFirst Foundation 8.0 GA 版本。

我遵循了这个问题的回答步骤

现在我将适配器上传到 Bluemix 上的 MobileFirst Server。 我使用 swagger 测试了适配器 POST,它工作正常,请参见下图:

当我从移动设备使用 POST 执行适配器时,我在 chrome 的调试中得到以下 ERROR:

当从客户端使用 GET 命令时,适配器本身正在工作。

问题是如何在客户端使用post命令?

客户端适配器调用实现:

POST 不工作

var sendFeedbackRequest = new WLResourceRequest(
              "/adapters/SendFeedback/sendFeedback",
              WLResourceRequest.POST);     
      sendFeedbackRequest.setQueryParameter("params",[ExchangeData.feedback.body.user,ExchangeData.feedback.body.feedback]);

开始工作

var sendFeedbackRequest = new WLResourceRequest(
                  "/adapters/SendFeedback/sendFeedback",
                  WLResourceRequest.GET);     
          sendFeedbackRequest.setQueryParameter(ExchangeData.feedback.body.user,ExchangeData.feedback.body.feedback);

适配器实现:

function sendFeedback(user, feedback) {

    var document = {
      body: {
        user: user,
        feedback: feedback
      }
    };

    MFP.Logger.warn("User feedback inputs " + JSON.stringify(document));

    var requestStructure = {
            method : 'POST',
            returnedContentType : 'plain',
            path : 'submitFeedback',
        body: {
          contentType:'application/json; charset=UTF-8',
          content: JSON.stringify(document)
        }
    };

    MFP.Logger.warn("Preparing request structure " + JSON.stringify(requestStructure));

    return MFP.Server.invokeHttp(requestStructure);

}

来自 @Idan Adar 基础教程 的 link 帮助修复了它,适用于我正在使用的适配器.

https://mobilefirstplatform.ibmcloud.com/tutorials/en/foundation/8.0/using-the-mfpf-sdk/resource-request/javascript/#sendformparameters-json

"sendFormParameters(formParams)" 不再是 "setQueryParameter("params", [user,feedback] )"

这是客户端的工作代码:

var formParams = {"params":"['" + theUser  + "','" +
                                         theFeedbackInformation + "']"}; 
        console.log('>>> Feedback  feedbackInformation: ', formParams);
        var sendFeedbackRequest = new WLResourceRequest(
              "/adapters/SendFeedback/sendFeedback",
              WLResourceRequest.POST);     
        sendFeedbackRequest.sendFormParameters(formParams);