java.lang.IllegalArgumentException异常:引起主机名称不能为空 [英] Caused by: java.lang.IllegalArgumentException: Host name may not be null
问题描述
我使用四
字符串在我的code。在第一
字符串中包含的http://
时,第二
字符串中包含用户主机URL(由用户输入),在第三
包含 /musics/a.mp3
和第四
字符串中包含完整的URL,通过结合previous字符串,如:
字符串第四=第一+第二+三;
然后我用的AsyncTask
的第四
字符串的执行,就像这样:
新JSONAsyncTask()执行(第四)。
和我得到下面的错误。
日志:
6月10日至七日:17:15.934:E / AndroidRuntime(1194):致命异常:AsyncTask的#1
6月10日至七日:17:15.934:E / AndroidRuntime(1194):了java.lang.RuntimeException:执行doInBackground发生错误()
6月10日至七日:17:15.934:E / AndroidRuntime(1194):在android.os.AsyncTask $ 3.done(AsyncTask.java:278)
6月10日至七日:17:15.934:E / AndroidRuntime(1194):在java.util.concurrent.FutureTask中$ Sync.innerSetException(FutureTask.java:273)
6月10日至七日:17:15.934:E / AndroidRuntime(1194):在java.util.concurrent.FutureTask.setException(FutureTask.java:124)
6月10日至七日:17:15.934:E / AndroidRuntime(1194):在java.util.concurrent.FutureTask中$ Sync.innerRun(FutureTask.java:307)
6月10日至七日:17:15.934:E / AndroidRuntime(1194):在java.util.concurrent.FutureTask.run(FutureTask.java:137)
6月10日至七日:17:15.934:E / AndroidRuntime(1194):在android.os.AsyncTask $ SerialExecutor $ 1.run(AsyncTask.java:208)
6月10日至七日:17:15.934:E / AndroidRuntime(1194):在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
6月10日至七日:17:15.934:E / AndroidRuntime(1194):在java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:569)
6月10日至七日:17:15.934:E / AndroidRuntime(1194):在java.lang.Thread.run(Thread.java:856)
6月10日至七日:17:15.934:E / AndroidRuntime(1194):java.lang.IllegalArgumentException异常:致主机名不可以为null
6月10日至七日:17:15.934:E / AndroidRuntime(1194):在org.apache.http.HttpHost<&初始化GT;(HttpHost.java:83)
6月10日至七日:17:15.934:E / AndroidRuntime(1194):在org.apache.http.impl.client.AbstractHttpClient.determineTarget(AbstractHttpClient.java:497)
6月10日至七日:17:15.934:E / AndroidRuntime(1194):在org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
6月10日至七日:17:15.934:E / AndroidRuntime(1194):在org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
6月10日至七日:17:15.934:E / AndroidRuntime(1194):在com.app.ifko.HomeActivity $ JSONAsyncTask.doInBackground(HomeActivity.java:101)
6月10日至七日:17:15.934:E / AndroidRuntime(1194):在com.app.ifko.HomeActivity $ JSONAsyncTask.doInBackground(HomeActivity.java:1)
6月10日至七日:17:15.934:E / AndroidRuntime(1194):在android.os.AsyncTask $ 2.call(AsyncTask.java:264)
6月10日至七日:17:15.934:E / AndroidRuntime(1194):在java.util.concurrent.FutureTask中$ Sync.innerRun(FutureTask.java:305)
6月10日至七日:17:15.934:E / AndroidRuntime(1194):... 5个
6月10日至七日:17:22.764:E /窗口管理器(1194):活动com.app.ifko.HomeActivity渗漏,最初这里添加窗口com.android.internal.policy.impl.PhoneWindow$DecorView@416b80b0
6月10日至七日:17:22.764:E /窗口管理器(1194):android.view.WindowLeaked:活动com.app.ifko.HomeActivity渗漏窗口com.android.internal.policy.impl.PhoneWindow$DecorView@416b80b0这是原本在这里添加
6月10日至七日:17:22.764:E /窗口管理器(1194):在android.view.ViewRootImpl<&初始化GT;(ViewRootImpl.java:343)
6月10日至七日:17:22.764:E /窗口管理器(1194):在android.view.WindowManagerImpl.addView(WindowManagerImpl.java:245)
6月10日至七日:17:22.764:E /窗口管理器(1194):在android.view.WindowManagerImpl.addView(WindowManagerImpl.java:193)
6月10日至七日:17:22.764:E /窗口管理器(1194):在android.view.WindowManagerImpl $ CompatModeWrapper.addView(WindowManagerImpl.java:118)
6月10日至七日:17:22.764:E /窗口管理器(1194):在android.view.Window $ LocalWindowManager.addView(Window.java:537)
6月10日至七日:17:22.764:E /窗口管理器(1194):在android.app.Dialog.show(Dialog.java:274)
6月10日至七日:17:22.764:E /窗口管理器(1194):在com.app.ifko.HomeActivity $ JSONAsyncTask.on preExecute(HomeActivity.java:90)
6月10日至七日:17:22.764:E /窗口管理器(1194):在android.os.AsyncTask.executeOnExecutor(AsyncTask.java:561)
6月10日至七日:17:22.764:E /窗口管理器(1194):在android.os.AsyncTask.execute(AsyncTask.java:511)
6月10日至七日:17:22.764:E /窗口管理器(1194):在com.app.ifko.HomeActivity.onCreate(HomeActivity.java:74)
6月10日至七日:17:22.764:E /窗口管理器(1194):在android.app.Activity.performCreate(Activity.java:4465)
6月10日至七日:17:22.764:E /窗口管理器(1194):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
6月10日至七日:17:22.764:E /窗口管理器(1194):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919)
6月10日至七日:17:22.764:E /窗口管理器(1194):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
6月10日至七日:17:22.764:E /窗口管理器(1194):在android.app.ActivityThread.access $ 600(ActivityThread.java:122)
6月10日至七日:17:22.764:E /窗口管理器(1194):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1146)
6月10日至七日:17:22.764:E /窗口管理器(1194):在android.os.Handler.dispatchMessage(Handler.java:99)
6月10日至七日:17:22.764:E /窗口管理器(1194):在android.os.Looper.loop(Looper.java:137)
6月10日至七日:17:22.764:E /窗口管理器(1194):在android.app.ActivityThread.main(ActivityThread.java:4340)
6月10日至七日:17:22.764:E /窗口管理器(1194):在java.lang.reflect.Method.invokeNative(本机方法)
6月10日至七日:17:22.764:E /窗口管理器(1194):在java.lang.reflect.Method.invoke(Method.java:511)
6月10日至七日:17:22.764:E /窗口管理器(1194):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:784)
6月10日至七日:17:22.764:E /窗口管理器(1194):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
6月10日至七日:17:22.764:E /窗口管理器(1194):在dalvik.system.NativeStart.main(本机方法)
6月10日至七日:17:24.144:I /流程(1194):发送信号。 PID:1194 SIG:9
活动code:
公共类HomeActivity延伸活动{串的第一,第二,第三,第四;
TextView的etTextToSave;
私人共享preferences共享preFS;@覆盖
保护无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState); 的setContentView(R.layout.home); etTextToSave =(的TextView)findViewById(R.id.etTextToSave); 共享preFS = getShared preferences(我的preFS,MODE_PRIVATE);
etTextToSave.setText(共享prefs.getString(共享prefsData,)); 。第二= etTextToSave.getText()的toString(); 首先=HTTP://;
第三=/musics/a.mp3;
第四=第一+第二+三; ......................... 新JSONAsyncTask()执行(第四次);}
如果该URL的主机部分来自于用户,必须用它来构建一个URL之前验证它。
不要叫新JSONAsyncTask()执行(第四次);
如果第二
为空
I am using four
Strings in my code. The first
String contains "http://
", the second
String contains user host URL (entered by user), the third
contains "/musics/a.mp3
" and the fourth
String contains complete URL, by combining the previous Strings, like this:
String fourth = first+second+third;
Then I'm using the fourth
String in AsyncTask
's execute, like this:
new JSONAsyncTask().execute(fourth);
And I'm getting the error below.
Log:
10-07 06:17:15.934: E/AndroidRuntime(1194): FATAL EXCEPTION: AsyncTask #1
10-07 06:17:15.934: E/AndroidRuntime(1194): java.lang.RuntimeException: An error occured while executing doInBackground()
10-07 06:17:15.934: E/AndroidRuntime(1194): at android.os.AsyncTask$3.done(AsyncTask.java:278)
10-07 06:17:15.934: E/AndroidRuntime(1194): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
10-07 06:17:15.934: E/AndroidRuntime(1194): at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
10-07 06:17:15.934: E/AndroidRuntime(1194): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
10-07 06:17:15.934: E/AndroidRuntime(1194): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
10-07 06:17:15.934: E/AndroidRuntime(1194): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)
10-07 06:17:15.934: E/AndroidRuntime(1194): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
10-07 06:17:15.934: E/AndroidRuntime(1194): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
10-07 06:17:15.934: E/AndroidRuntime(1194): at java.lang.Thread.run(Thread.java:856)
10-07 06:17:15.934: E/AndroidRuntime(1194): Caused by: java.lang.IllegalArgumentException: Host name may not be null
10-07 06:17:15.934: E/AndroidRuntime(1194): at org.apache.http.HttpHost.<init>(HttpHost.java:83)
10-07 06:17:15.934: E/AndroidRuntime(1194): at org.apache.http.impl.client.AbstractHttpClient.determineTarget(AbstractHttpClient.java:497)
10-07 06:17:15.934: E/AndroidRuntime(1194): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
10-07 06:17:15.934: E/AndroidRuntime(1194): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
10-07 06:17:15.934: E/AndroidRuntime(1194): at com.app.ifko.HomeActivity$JSONAsyncTask.doInBackground(HomeActivity.java:101)
10-07 06:17:15.934: E/AndroidRuntime(1194): at com.app.ifko.HomeActivity$JSONAsyncTask.doInBackground(HomeActivity.java:1)
10-07 06:17:15.934: E/AndroidRuntime(1194): at android.os.AsyncTask$2.call(AsyncTask.java:264)
10-07 06:17:15.934: E/AndroidRuntime(1194): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
10-07 06:17:15.934: E/AndroidRuntime(1194): ... 5 more
10-07 06:17:22.764: E/WindowManager(1194): Activity com.app.ifko.HomeActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@416b80b0 that was originally added here
10-07 06:17:22.764: E/WindowManager(1194): android.view.WindowLeaked: Activity com.app.ifko.HomeActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@416b80b0 that was originally added here
10-07 06:17:22.764: E/WindowManager(1194): at android.view.ViewRootImpl.<init>(ViewRootImpl.java:343)
10-07 06:17:22.764: E/WindowManager(1194): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:245)
10-07 06:17:22.764: E/WindowManager(1194): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:193)
10-07 06:17:22.764: E/WindowManager(1194): at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:118)
10-07 06:17:22.764: E/WindowManager(1194): at android.view.Window$LocalWindowManager.addView(Window.java:537)
10-07 06:17:22.764: E/WindowManager(1194): at android.app.Dialog.show(Dialog.java:274)
10-07 06:17:22.764: E/WindowManager(1194): at com.app.ifko.HomeActivity$JSONAsyncTask.onPreExecute(HomeActivity.java:90)
10-07 06:17:22.764: E/WindowManager(1194): at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:561)
10-07 06:17:22.764: E/WindowManager(1194): at android.os.AsyncTask.execute(AsyncTask.java:511)
10-07 06:17:22.764: E/WindowManager(1194): at com.app.ifko.HomeActivity.onCreate(HomeActivity.java:74)
10-07 06:17:22.764: E/WindowManager(1194): at android.app.Activity.performCreate(Activity.java:4465)
10-07 06:17:22.764: E/WindowManager(1194): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
10-07 06:17:22.764: E/WindowManager(1194): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919)
10-07 06:17:22.764: E/WindowManager(1194): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
10-07 06:17:22.764: E/WindowManager(1194): at android.app.ActivityThread.access$600(ActivityThread.java:122)
10-07 06:17:22.764: E/WindowManager(1194): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
10-07 06:17:22.764: E/WindowManager(1194): at android.os.Handler.dispatchMessage(Handler.java:99)
10-07 06:17:22.764: E/WindowManager(1194): at android.os.Looper.loop(Looper.java:137)
10-07 06:17:22.764: E/WindowManager(1194): at android.app.ActivityThread.main(ActivityThread.java:4340)
10-07 06:17:22.764: E/WindowManager(1194): at java.lang.reflect.Method.invokeNative(Native Method)
10-07 06:17:22.764: E/WindowManager(1194): at java.lang.reflect.Method.invoke(Method.java:511)
10-07 06:17:22.764: E/WindowManager(1194): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
10-07 06:17:22.764: E/WindowManager(1194): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
10-07 06:17:22.764: E/WindowManager(1194): at dalvik.system.NativeStart.main(Native Method)
10-07 06:17:24.144: I/Process(1194): Sending signal. PID: 1194 SIG: 9
Activity code:
public class HomeActivity extends Activity {
String first, second, third, fourth;
TextView etTextToSave;
private SharedPreferences sharedprefs;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.home);
etTextToSave = (TextView) findViewById(R.id.etTextToSave);
sharedprefs = getSharedPreferences("MyPrefs", MODE_PRIVATE);
etTextToSave.setText(sharedprefs.getString("SharedPrefsData",""));
second = etTextToSave.getText().toString();
first = "http://";
third = "/musics/a.mp3";
fourth = first+second+third;
.........................
new JSONAsyncTask().execute(fourth);
}
If the host part of the URL comes from the user, you must validate it before using it to construct a URL.
Don't call new JSONAsyncTask().execute(fourth);
if second
is null.
这篇关于java.lang.IllegalArgumentException异常:引起主机名称不能为空的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!