Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 编码Url时出现NullPointerException_Java_Android_Urlencode - Fatal编程技术网

Java 编码Url时出现NullPointerException

Java 编码Url时出现NullPointerException,java,android,urlencode,Java,Android,Urlencode,我尝试使用以下代码对某个url进行编码: myWebView = (WebView)findViewById(R.id.webView1); Login myLogin = new Login(); url = myLogin.AuthUrl; try { String encodedUrl = URLEncoder.encode(url, "UTF-8"); } catch (UnsupportedEncodingExce

我尝试使用以下代码对某个url进行编码:

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)
出了什么问题?
谢谢您的帮助。

您的
登录()中有什么内容

Login myLogin = new Login();  
请登录并检查myLogin对象是否有url

字符串编码=urlcoder.encode(url,“UTF-8”)

应该是:

String encoded = URLEncoder.encode(url,"UTF-8");  
如果您已将其声明为变量,那么它是否已正确初始化


请检查URLEncoder是否出现同样的错误(直接使用时,没有变量)

使用如下方法:

        try 
        {
            encoded = URLEncoder.encode(url,"UTF-8");
            txt1.setText(encoded);
        } 
        catch (UnsupportedEncodingException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

这是…的编码方法的源代码

第132行显示在stacktrace

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为空

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

第42行写了什么?使用这个
字符串查询=urlcoder.encode(url,“utf-8”)我认为您已在大写字母中设置了
UTF-8
,这可能是导致问题的原因。我不确定它是否正确,但请试一试。@SagarShah这是我在问题中提到的同一行。ie
String encoded=urlcoder.encode(url,“UTF-8”)
您发布的代码段不会引发该异常。在实际代码中,您正在将
null
字符串传递给
urlcoder.encode()
请发布您的OnCreate如果编码错误,它将返回一个不受支持的codingException,您可以在文档中阅读,而不是NullPointerException@ReeCube首都——“乌尔勒……”-它不会也给出编译时错误吗?@user2450263:“它不会也给出编译时错误吗?”-如果OP碰巧定义了一个名为
urlcoder
的字段,则不会,但它仍然不会显示这样的堆栈跟踪。@Squonk:),true,agreed@ReeCube并将其定义为URLEncoder。所使用的是UrlEncoder—R和L
Login myLogin = new Login();
url = myLogin.AuthUrl;