XML API调用不能与ionic3中的cordova-plugin-advanced-http最新版本一起使用

Cod*_*ger 9 xml ios ionic3 cordova-plugin-advanced-http

我正在使用cordova-plugin-advanced-http插件进行API调用,所有JSON启用的API工作正常,但我有一个XML嵌入式API在Postman中工作正常,但我从离子调用它的param没有得到服务器端.

下面是我的XML API代码:

类型1:

let headers = {
          "Content-type": 'text/xml; charset=utf-8',
          "Authorization": token,
        };

    let xmlBody =
      '<ServiceRequest>' +
      '<CaseNumber>' + caseNumber +
      '</CaseNumber>' +
      '</ServiceRequest>'

    this.httpPlugin.setDataSerializer('utf8');

    this.httpPlugin.post('https://test.com/Service', xmlBody, headers).then((response) => {
      console.log("XML Response : ", JSON.stringify(response.data));
      xml2js.parseString(response.data, function (err, result) {
        console.log("XML parser success:", result);
        console.log("XML parser error:", err);
        if (result) {
          resolve(result);
        } else {
          reject(err);
        }

      });
    }).catch(error => {
      if (error.status == 403) {
        console.log("Token expired : " + JSON.stringify(error));
      } else {
        console.log("Error : " + error.error);
        console.log("Error " + JSON.stringify(error));
        reject(error);
      }
    });
Run Code Online (Sandbox Code Playgroud)

类型2:

    let xmlBody = '<ServiceRequest>' +
      '<CaseNumber>' + caseNumber +
      '</CaseNumber>' +
      '</ServiceRequest>';

    console.log("XML Body", xmlBody)

    // this.httpPlugin.setRequestTimeout(60);
    this.httpPlugin.setDataSerializer('utf8');

    this.httpPlugin.setHeader('*', 'authorization', token);
    this.httpPlugin.setHeader('*', 'Content-Type', "application/x-www-form-urlencoded");

    this.httpPlugin.post('https://test.com/Service', xmlBody, {}).then((response) => {
      console.log("XML Response : ", JSON.stringify(response.data));
      xml2js.parseString(response.data, function (err, result) {
        console.log("XML parser success:", result);
        console.log("XML parser error:", err);
        if (result) {
          resolve(result);
        } else {
          reject(err);
        }

      });

    }).catch(error => {
      if (error.status == 403) {
        console.log("Token expired : " + JSON.stringify(error));
      } else {
        console.log("Error : " + error.error);
        console.log("Error " + JSON.stringify(error));
        reject(error);
      }

    });
Run Code Online (Sandbox Code Playgroud)

它始终从服务器抛出错误并且使用相同的请求我能够在postman和Native iOS代码中获取数据.

我在GitHub上提到了这个问题,但仍然没有成功.

虽然它无法在服务器上获取数据,但我遗漏了一些东西.

帮我解决这个问题.

Cod*_*ger 0

在这个问题上挣扎了很多之后,我找到了一个解决方案来清理我的请求cookie。

在 HTTP Advanced 插件中,有一种方法可以清除我的 cookie。

clearCookies()

清除所有cookie。

在调用任何 API 之前使用此方法。

那么它将清除我所有的 cookie 以及与旧 cookie 相关的问题将以这种方式解决。

constructor(
    public storage: Storage,
    public httpPlugin: HTTP,
    private platform: Platform
  ) {
    // enable SSL pinning
    httpPlugin.setSSLCertMode("pinned");
    //Clear old cookies
    httpPlugin.clearCookies();
  }
Run Code Online (Sandbox Code Playgroud)

上面的代码解决了我的问题。

感谢大家的快速指导和建议。

如果这不是清除我的旧请求数据的正确方法,请对此发表评论。