0

私のプロジェクトでは、SQLサーバーから数千のレコードとして応答を返すWebサービスを呼び出していますが、SOAP ENVELOPEのデフォルトサイズは64KBであるため、log-catとOutOfMemory例外で最初の15レコードしか取得していません...
教えてくださいこのレスポンスをSDカードのxmlファイルに書き込む方法。

private static String SOAP_ACTION1 ="http://tempuri.org/DownloadAllMasterDataRelatedToFarmer";
private static String NAMESPACE = "http://tempuri.org/";
private static String METHOD_NAME1 = "DownloadAllMasterDataRelatedToFarmer";
private static String URL = "http://someIP/Tracebaledemo/fieldbook/webservice1.asmxwsdl";

(...)

SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME1);
request.addProperty("prefixText",txtFar.getText().toString());
request.addProperty("count",txtCount.getText().toString());
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.setOutputSoapObject(request);
envelope.dotNet = true;

try {
    HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
    Log.d(TAG, "Entering Try and calling WebService");

    //this is the actual part that will call the webservice
    androidHttpTransport.call(SOAP_ACTION1, envelope);

    // Get the SoapResult from the envelope body.
    Log.d(TAG, "Fetching Results");

    SoapObject result = (SoapObject)envelope.bodyIn;
    Log.d(TAG, "Result from WebService before if block= "+result);
} (...)
4

1 に答える 1

-1

xml を保存して、records不要な場合はフェッチするだけです。

なぜあなたはあなたに制限を定義しないのですかActivity

Suppose 30 records per hit 

または、webService を改良することもできます。また、この方法Footerで表示Loading more を使用して、レコードを表示することもできます。

欠点 - 10,000 件のレコードがあるとあなたが言ったように、レコードを取得するのに時間がかかります

解決策 - 検索イベントの最初の文字を使用して、Web サービスを絞り込むことができます。

于 2012-12-17T13:02:35.623 に答える