0

Gson を使用していくつかの Web サービス パラメーターをシリアル化しようとすると、奇妙なエラーが発生します。

11-03 00:56:43.088: * *.helpers.JsonServer(620): 結果データ: {"メッセージ":"JSON JavaScriptSerializer を使用したシリアル化または逆シリアル化中にエラーが発生しました。文字列の長さが maxJsonLength に設定された値を超えていますプロパティ。 Script.Serialization.JavaScriptSerializer.Deserialize[T](文字列入力)\r\n System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)","ExceptionType":"System.ArgumentException"}

シリアル化しようとしているパラメーターはいくつかの文字列と数字ですが、問題はパラメーターとして大きな文字列 (base64 イメージ) がある場合です。

Gson オブジェクトの depthLimit を増やす方法が見つかりませんでした。何か案が?

私のコードは次のようになります。

Gson gson = new Gson();
httpPost.setEntity(new StringEntity(gson.toJson(parameters), "utf-8"));  //here I get the error
httpPost.setHeader("Content-Type", "application/json; charset=utf-8");

パラメータはハッシュテーブルです。このハッシュの項目の 1 つは、大きな (600k 文字を超える) 文字列 - base64 イメージです。この画像は、1M 以上になることがあります。

質問: その制限を増やす方法

4

1 に答える 1

0

エラーは Android からではなく、Web サービスからのものであることがわかりました。Web サービス .Net にはいくつかの制限があります。

誰かがこれを修正する方法に興味がある場合に備えて、web.config ファイルに設定します。

  <system.web.extensions>
    <scripting>
      <webServices>
        <jsonSerialization maxJsonLength="999999999"/>
      </webServices>
    </scripting>
  </system.web.extensions>

Gsonは完璧に機能します!

于 2013-11-03T10:05:15.113 に答える