0

我尝试使用 Gson 序列化一些 Web 服务参数,但出现一个奇怪的错误:

11-03 00:56:43.088: * *.helpers.JsonServer(620): 结果数据: {"Message":"使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错。字符串的长度超过 maxJsonLength 上设置的值属性。\r\n参数名称:System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer 序列化程序,字符串输入,类型类型,Int32 depthLimit) 处的输入","StackTrace":"\r\n System.Web。 Script.Serialization.JavaScriptSerializer.Deserialize[T](字符串输入)\r\n 在 System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext 上下文,WebServiceMethodData 方法数据)","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");

参数是一个哈希表。此哈希中的一项是一个大(超过 60 万个字符)字符串 - base64 图像。这个图像可能会更大一些 - 超过 1M。

问题:如何增加该限制

4

1 回答 1

0

我刚刚发现错误不是来自Android,而是来自网络服务。网络服务 .Net 有一些限制。

以防万一有人对如何解决此问题感兴趣,请在 web.config 文件中进行设置:

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

Gson 工作完美!

于 2013-11-03T10:05:15.113 回答