2017-11-20 10 views
0

私はユーザーが任意のXMLを貼り付けることができるテキスト領域を持っています。次に、ボタンをクリックすると、XMLがサーバーに送信され、応答が取得されます。私は、これは小さなXMLでも完璧に動作することがわかりました。しかし、私の問題は、大規模なXMLを送信すると、Railsサーバのログには単に非常に大きなXMLデータをAngular 2のParamsとして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(これは、プロバイダへのテキストエリアから読み出した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

query_stringが切り詰められる可能性がある点(ブラウザ、フロントWebサーバー、Railsアプリケーションサーバー)があり、「無効なリクエスト」が発生することがあります。したがって、大きなフィールドを送信するには、HTTPの 'POST'メソッドを使用する必要があります。 'return this.http.post(...)'のようなもの –

答えて

0

申し訳ありませんが、質問の入力ミス。私は実際にPOSTリクエストを使用します。

ありがとうございます。Pavel Mikhailyukを指しています。

これは私がそれを固定する方法である:私はHTTP POSTのオプションとしてXMLを渡す

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

代わりのクエリをフレーミングはように手動paramsは

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

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

これは、ように見えました仕事!!!

関連する問題