Java 编码Url时出现NullPointerException
我尝试使用以下代码对某个url进行编码: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
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这是我在问题中提到的同一行。ieString 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;