代码之家  ›  专栏  ›  技术社区  ›  CodeChanger

XML API调用不适用于ionic3中的cordova插件高级http最新版本

  •  9
  • CodeChanger  · 技术社区  · 7 年前

    我正在使用 cordova-plugin-advanced-http API调用插件 JSON XML 在Postman中运行良好的嵌入式API,但是当我从ionic调用它时,它的参数在服务器端没有得到。

    下面是我的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);
          }
        });
    

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

    我提到 this GitHub上的问题,但仍然没有成功。

    帮我解决这个问题。

    1 回复  |  直到 7 年前
        1
  •  0
  •   CodeChanger    7 年前

    在http高级插件中,有一种方法可以清除我的cookies。

    clearCookies()

    清除所有Cookie。

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

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

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

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

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

    推荐文章