【发布时间】:2013-08-19 23:18:01
【问题描述】:
我有一个 android 应用程序,并在我的网站上添加了 ssl 以在登录时保护登录信息。我有一个异步任务,它发送信息以检查数据库等。
设置我的 ssl correctley 并看到它在我的网站上运行后。我尝试在我的异步任务的 url 中将 http: 更改为 https: 并且它因以下错误而崩溃:
08-19 19:14:16.779 9314-9465/com.beerportfolio.beerportfoliopro E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:299)
at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
at java.util.concurrent.FutureTask.run(FutureTask.java:137)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:864)
Caused by: java.lang.IllegalArgumentException: Illegal character in query at index 50: https://myDBUrl
at java.net.URI.create(URI.java:727)
at org.apache.http.client.methods.HttpGet.<init>(HttpGet.java:75)
at com.example.beerportfoliopro.ReadLogInJSON.readJSONFeed(ReadLogInJSON.java:90)
at com.example.beerportfoliopro.ReadLogInJSON.doInBackground(ReadLogInJSON.java:37)
at com.example.beerportfoliopro.ReadLogInJSON.doInBackground(ReadLogInJSON.java:24)
at android.os.AsyncTask$2.call(AsyncTask.java:287)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
... 5 more
更新:
发现错误不在 ssl 部分,但是当使用自动更正键盘在用户名末尾添加一个空格时,它会崩溃。如果输入,如何消除这个空格?
【问题讨论】:
-
仔细查看后我认为错误是我输入的用户名中的意外空格现在仔细检查
-
您可以对 URL 进行编码(我认为这会将“”替换为
%20)。 -
通常,您应该在发送和 urlencoding 之前修剪数据。这将避免这些问题。
标签: android ssl android-asynctask