将非常大的XML数据作为Angular 2中的params传递给Rails

时间:2017-11-20 11:14:04

标签: ruby-on-rails xml angular

我有一个文本区域,用户可以粘贴任何XML。然后单击按钮,XML将发送到服务器以获取响应。我发现,这适用于较小的XML。但是,我的问题是,当我发送大型XML时,Rails服务器日志只是说

  

!!无效   请求

CODE

Provider.ts

import { Injectable } from '@angular/core';
import { Http, Headers, Response } from '@angular/http';
import { HttpClientService } from './../services/httpclient.service';

@Injectable()
export class QuestWebServiceTestProvider {
  constructor(private http: HttpClientService) {}

  getResponseXML(params) {
    return this.http.get('/api/v1/get_response_xml?request_xml=' + params["request_xml"]);
  }
}

Component.ts (这会将从textarea读取的XML传递给提供者)

getResponse() {
  let requestXml = this.requestXmlElement.nativeElement.value.trim();

  if(requestXml.length > 0) {
    let requestXmlJson = encodeURI(requestXml);

    this.<provider>.getResponseXML({request_xml: requestXmlJson).subscribe(
      data => {
        console.log(data);
      }
    )
  }
}

发送更大的XML的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

抱歉,问题中的拼写错误。我实际上使用POST请求。

感谢Pavel Mikhailyuk指点。

这就是我修复它的方法:

而不是手动将查询参数框架化为:

...get_response_xml?request_xml=' + params["request_xml"]

我将XML作为选项传递给HTTP POST

let options = {request_xml: params["request_xml"] };

return this.http.post('...get_response_xml?, options);

这似乎有用!!!