java.lang.IllegalArgumentException: HTTP parameters may not be null

java.lang.IllegalArgumentException: HTTP parameters may not be null

问题分析

根据官方文档,当方法接收到了一个不合法或不正确的参数时会抛出此类异常。

解决方案

因为参数不合法导致抛出tion,请根据堆栈信息描述的出错的函数参数,按照要求传入正确的参数。

代码示例

  public static void getUserAgent(Context context) {
    WebView webview = new WebView(context);
    WebSettings settings = webview.getSettings();
    userAgent = settings.getUserAgentString();
    Log.i("UserAgent:" + userAgent);
  }

示例一

  java.lang.IllegalArgumentException: HTTP parameters may not be null
    at org.apache.http.params.HttpProtocolParams.getUserAgent(HttpProtocolParams.java:150)
    at org.apache.http.impl.client.AbstractHttpClient.isMoMMS(AbstractHttpClient.java:790)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:563)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:520)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:498)
    at com.g.utils.HttpClientUtil.post(HttpClientUtil.java:99)
    at com.g.utils.LoadDataFromServer$2.run(LoadDataFromServer.java:195)

boolean java lang

因为参数为空导致获取字符集失败抛出的异常。

在该示例中,因为变量为空,所以报错。User Agent中文名为用户代理java.lang.IllegalArgumentException: HTTP parameters may not be null,简称UA,它是一个特殊字符串头boolean java lang,使得服务器能够识别客户使用的操作系统及版本、CPU类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。

示例二

  java.lang.IllegalArgumentException
    at android.view.Surface.nativeLockCanvas(Native Method)
    at android.view.Surface.lockCanvas(Surface.java:243)
    at android.view.ViewRootImpl.drawSoftware(ViewRootImpl.java:2435)
    at android.view.ViewRootImpl.draw(ViewRootImpl.java:2409)
    at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2253)
    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1883)
    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1000)
    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5670)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761)
    at android.view.Choreographer.doCallbacks(Choreographer.java:574)
    at android.view.Choreographer.doFrame(Choreographer.java:544)
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747)
    at android.os.Handler.handleCallback(Handler.java:733)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:136)
    at android.app.ActivityThread.main(ActivityThread.java:5017)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:515)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
    at dalvik.system.NativeStart.main(Native Method)

该问题在诸多系统版本均有出现。这个问题是由于系统的bug导致内存无法被正确管理,从而导致内存泄漏。当内存太低时,绘图时无法申请到内存资源,导致此异常抛出,应用崩溃。

解决方法如下:

1:强制管理的生命周期。在对应的的声明周期管理中boolean java lang,对进行强制的管理。当在()时java.lang.IllegalArgumentException: HTTP parameters may not be null,强制掉,并清空的。这样,占用的内存会在下一次GC时,被系统回收。

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle saved) {
        View v = super.onCreateView(inflater, container, saved);
        mActivity = (BaseActivity) getSupportActivity();
        // this is the framelayout which will contain our WebView
        mWebContainer = (FrameLayout) v.findViewById(R.id.web_container);
        return v;
    }
    public void onResume() {
        super.onResume();
        // create new WebView and set all its options.
        mWebView = new WebView(mActivity);
        mWebView....
        // add it to the container
        mWebContainer.addView(mWebView);
        // if data is available, display it immediately
        if(mTopic != null) {
            mWebView.loadDataWithBaseURL("file:///android_asset/", mTopic.getHtmlCache(),
                    "text/html", "UTF-8", null);
        }
    }
    @Override
    public void onPause() {
        super.onPause();
        // destroy the webview
        mWebView.destroy();
        mWebView = null;
        // remove the view from the container.
        mWebContainer.removeAllViews();
    }

2:取消应用的硬件加速

在.xml里增加:=”false”,用来禁止硬件加速,此方法可以避免该系统bug。不过,不推荐游戏或者对流畅性要求很高的应用采用此方法,可能会导致应用变得有一些卡顿。

示例三

  01-17 00:19:44.703: E/Surface(9731): Surface::lock failed, already locked
  01-17 00:19:44.796: E/SurfaceHolder(9731): Exception locking surface
  01-17 00:19:44.796: E/SurfaceHolder(9731): java.lang.IllegalArgumentException
  01-17 00:19:44.796: E/SurfaceHolder(9731):  at android.view.Surface.lockCanvasNative(Native Method)
  01-17 00:19:44.796: E/SurfaceHolder(9731):  at android.view.Surface.lockCanvas(Surface.java:314)
  01-17 00:19:44.796: E/SurfaceHolder(9731):  at android.view.SurfaceView$3.internalLockCanvas(SurfaceView.java:762)
  01-17 00:19:44.796: E/SurfaceHolder(9731):  at android.view.SurfaceView$3.lockCanvas(SurfaceView.java:741)
  01-17 00:19:44.796: E/SurfaceHolder(9731):  at com.frequency.FreqTapArea$2.onTouch(FreqTapArea.java:54)
  01-17 00:19:44.796: E/SurfaceHolder(9731):  at android.view.View.dispatchTouchEvent(View.java:3897)
  01-17 00:19:44.796: E/SurfaceHolder(9731):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:869)
  01-17 00:19:44.796: E/SurfaceHolder(9731):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:869)
  01-17 00:19:44.796: E/SurfaceHolder(9731):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:869)
  01-17 00:19:44.796: E/SurfaceHolder(9731):  at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1737)
  01-17 00:19:44.796: E/SurfaceHolder(9731):  at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1153)
  01-17 00:19:44.796: E/SurfaceHolder(9731):  at android.app.Activity.dispatchTouchEvent(Activity.java:2096)
  01-17 00:19:44.796: E/SurfaceHolder(9731):  at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1721)
  01-17 00:19:44.796: E/SurfaceHolder(9731):  at android.view.ViewRoot.deliverPointerEvent(ViewRoot.java:2200)
  01-17 00:19:44.796: E/SurfaceHolder(9731):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1884)
  01-17 00:19:44.796: E/SurfaceHolder(9731):  at android.os.Handler.dispatchMessage(Handler.java:99)
  01-17 00:19:44.796: E/SurfaceHolder(9731):  at android.os.Looper.loop(Looper.java:130)
  01-17 00:19:44.796: E/SurfaceHolder(9731):  at android.app.ActivityThread.main(ActivityThread.java:3835)
  01-17 00:19:44.796: E/SurfaceHolder(9731):  at java.lang.reflect.Method.invokeNative(Native Method)
  01-17 00:19:44.796: E/SurfaceHolder(9731):  at java.lang.reflect.Method.invoke(Method.java:507)
  01-17 00:19:44.796: E/SurfaceHolder(9731):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847)
  01-17 00:19:44.796: E/SurfaceHolder(9731):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605)
  01-17 00:19:44.796: E/SurfaceHolder(9731):  at dalvik.system.NativeStart.main(Native Method))

boolean java lang

在操作之前需要加锁(函数),操作结束后,应该立即释放锁资源(函数),这个问题的出现就是因为()之后没有释放锁资源boolean java lang,正确的流程是:

调用.(); 获取对象。

调用方法进行绘图:.(arg, arg, arg, arg);

绘图完成之后,调用.(c); 释放锁资源。

示例如下:

  public boolean draw(View arg0, MotionEvent arg1) {
          Canvas c = mSurfaceHolder.lockCanvas();
          // Draw something
      c.drawCircle(args,…,arg);
          mSurfaceHolder.unlockCanvasAndPost(c);
          return true;
  }

参考文章

公告:
1. 本站所有资源来源于用户上传和网络,如有侵权请联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长处理!
6. 本站不售卖代码,资源标价只是站长收集整理的辛苦费!如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
7. 站长QQ号码 2205675299

资源库 - 资源分享下载网 » java.lang.IllegalArgumentException: HTTP parameters may not be null

常见问题FAQ

关于资源售价和售后服务的说明?
本站所有资源的标价均为本站收集资源的辛苦费,不代表资源本身的价值。软件是高智慧高价值的商品,不可能是白菜价。本站资源标价只是赞助费用,收取的赞助费仅用来维持本站的日常运营!毕竟收集整理资料需要投入云计算资源和站长大量的精力。
代码有没有售后服务和技术支持?
由于代码的运行具有不可预见性,本站不保证代码完整可运行,不提供技术支持和售后服务。 本站原创代码都是站长自己开发的,可以有偿提供技术支持服务。 网站里标明【亲测】的代码都是站长亲测过的,其他的代码由于精力有限,没有一一测试,不能保证代码就一定能够使用,更没有技术支持服务,下载前请自行斟酌。
有没有搭建服务?
由于搭建服务比较费时费力,所以本站除了原创代码外均不提供搭建服务。本站分享代码纯属兴趣爱好,不以盈利为目的,请勿咨询有没有搭建服务,谢谢理解。
链接地址失效了怎么办?
请带上资源链接地址联系客服,工作时间内我们看到后将第一时间回复。
关于解压密码
本站资源一般都没有加密,如果发现需要解压密码的,那么就输入 hao.35dc.com 试试。

发表评论

资源库,由老程序员细心甄别、精心筛选,只为提供优质的源码资源

关于我们 联系我们