java - android 编码 Url 时出现 NullPointerException

标签 java android urlencode

我正在尝试使用以下代码对某个网址进行编码:

myWebView = (WebView)findViewById(R.id.webView1);

    Login myLogin = new Login();
    url = myLogin.AuthUrl;
    try 
    {

        String encodedUrl = URLEncoder.encode(url, "UTF-8");
    } 
    catch (UnsupportedEncodingException e) 
    {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    myWebView.getSettings().setJavaScriptEnabled(true);
    myWebView.loadUrl(url);
    myWebView.setWebViewClient(new MyWebViewClient());

但我收到以下错误:-

 02-27 15:21:57.054: E/AndroidRuntime(1586): FATAL EXCEPTION: main
    02-27 15:21:57.054: E/AndroidRuntime(1586): Caused by: java.lang.NullPointerException
    02-27 15:21:57.054: E/AndroidRuntime(1586): at libcore.net.UriCodec.encode(UriCodec.java:132)
    02-27 15:21:57.054: E/AndroidRuntime(1586): at java.net.URLEncoder.encode(URLEncoder.java:57)
    02-27 15:21:57.054: E/AndroidRuntime(1586): at com.abcdef.abcd.Details.onCreate(Details.java:42)

可能出了什么问题? 感谢您的帮助。

最佳答案

这是libcore.net.UriCodec的编码方法的来源...

public final String encode(String s, Charset charset) {
    // Guess a bit larger for encoded form
    StringBuilder builder = new StringBuilder(s.length() + 16);
    appendEncoded(builder, s, charset, false);
    return builder.toString();
}

第 132 行显示在堆栈跟踪中...

02-27 15:21:57.054: E/AndroidRuntime(1586):     at libcore.net.UriCodec.encode(UriCodec.java:132)

...这是行...

    StringBuilder builder = new StringBuilder(s.length() + 16);

它抛出 NPE 的唯一方法是在 s.length 处。换句话说,您正在为 url 传递一个空字符串。

编辑:查看您发布的额外代码,似乎创建 Login 类的新实例不会初始化 AuthUrl 字段,因此 url 为 null .

Login myLogin = new Login();
url = myLogin.AuthUrl;

关于java - android 编码 Url 时出现 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22064841/

相关文章:

java - 即使捕获到异常,执行也会终止

java - 来自不同类的静态变量的问题

java - 正则表达式查找升序和变音符号

ios - 如何在urlRequest中向httpBody添加urlencoded参数

java - 带有 Spring Data 和 Cassandra @Query 的 IN 子句

android - SlidingMenu 和 ViewPager 导致 Recursive Entry

Android 阻止恢复 Activity

android - Google play 游戏服务,确定主机或服务器

java - 对 URL 进行编码后出现 URISyntax 异常

php - 如何解码 php 中的 url,其中 url 使用 encodeURIComponent() 编码