相關的代碼片段:BasicHttpParams - 添加日期格式(拋出ClassCastException)
BasicHttpParams params = new BasicHttpParams();
Object dateFormats = "E, dd-MMM-yyyy HH:mm:ss zzz";
List<Object> dateFormatList = new ArrayList<Object>();
dateFormatList.add(dateFormats);
params.setParameter(CookieSpecPNames.DATE_PATTERNS, dateFormatList);
HttpClient client = new DefaultHttpClient(params);
HttpGet httpGet = new HttpGet("http://twitter.com/statuses/user_timeline/sample_user.json");
try {
HttpResponse response = client.execute(httpGet);
我試過用字符串,數組轉換列表,在一個字符串數組使用Arrays.asList,盡我所能考慮到。但每次我都會得到如下的ClassCastException。我已經通過源代碼和發生異常的行,BestMatchSpecFactory使用getParameter()來檢索CookieSpecPNames.DATE_PATTERNS中的參數集(這應該是我的列表<>)並將其保存到集合中。
下面是BestMatchSpecFactory.java在org.apache.http.impl.cookie代碼在第49行:
Collection<?> param = (Collection<?>) params.getParameter(CookieSpecPNames.DATE_PATTERNS);
的ArrayList實現它實現了採集,那麼究竟什麼是鑄造這裏的問題列表?
02-28 10:09:29.117: W/System.err(1222): java.lang.ClassCastException: java.util.ArrayList
02-28 10:09:29.137: W/System.err(1222): at org.apache.http.impl.cookie.BestMatchSpecFactory.newInstance(BestMatchSpecFactory.java:49)
02-28 10:09:29.137: W/System.err(1222): at org.apache.http.cookie.CookieSpecRegistry.getCookieSpec(CookieSpecRegistry.java:113)
02-28 10:09:29.137: W/System.err(1222): at org.apache.http.client.protocol.RequestAddCookies.process(RequestAddCookies.java:147)
02-28 10:09:29.147: W/System.err(1222): at org.apache.http.protocol.BasicHttpProcessor.process(BasicHttpProcessor.java:290)
02-28 10:09:29.147: W/System.err(1222): at org.apache.http.protocol.HttpRequestExecutor.preProcess(HttpRequestExecutor.java:160)
02-28 10:09:29.167: W/System.err(1222): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:401)
02-28 10:09:29.167: W/System.err(1222): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
02-28 10:09:29.181: W/System.err(1222): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
02-28 10:09:29.181: W/System.err(1222): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
02-28 10:09:29.181: W/System.err(1222): at com.duderlabs.candr.MainActivity.readTwitterFeed(MainActivity.java:80)
02-28 10:09:29.181: W/System.err(1222): at com.duderlabs.candr.MainActivity.onCreate(MainActivity.java:39)
02-28 10:09:29.189: W/System.err(1222): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
02-28 10:09:29.217: W/System.err(1222): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
02-28 10:09:29.217: W/System.err(1222): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
02-28 10:09:29.217: W/System.err(1222): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
02-28 10:09:29.217: W/System.err(1222): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
02-28 10:09:29.238: W/System.err(1222): at android.os.Handler.dispatchMessage(Handler.java:99)
02-28 10:09:29.238: W/System.err(1222): at android.os.Looper.loop(Looper.java:123)
02-28 10:09:29.258: W/System.err(1222): at android.app.ActivityThread.main(ActivityThread.java:3683)
02-28 10:09:29.258: W/System.err(1222): at java.lang.reflect.Method.invokeNative(Native Method)
02-28 10:09:29.258: W/System.err(1222): at java.lang.reflect.Method.invoke(Method.java:507)
02-28 10:09:29.258: W/System.err(1222): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
02-28 10:09:29.258: W/System.err(1222): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
02-28 10:09:29.258: W/System.err(1222): at dalvik.system.NativeStart.main(Native Method)
UPDATE
我已經更新了基於下面的答案代碼:
BasicHttpParams params = new BasicHttpParams();
String dateFormat = "E, dd-MMM-yyyy HH:mm:ss zzz";
Collection<String> dateFormatList = new ArrayList<String>();
dateFormatList.add(dateFormat);
params.setParameter(CookieSpecPNames.DATE_PATTERNS, dateFormatList);
HttpClient client = new DefaultHttpClient(params);
HttpGet httpGet = new HttpGet("http://twitter.com/statuses/user_timeline/sample_user.json");
try {
HttpResponse response = client.execute(httpGet);
但仍然得到同樣的異常。
烏爾缺少一些代碼行中,你有問題 - 請修改後 – user1428716 2013-02-28 19:05:25
堆棧跟蹤引回頂段的最後一行,在那裏執行請求。堆棧跟蹤結束於中間代碼片段,其中BestMatchSpecFactory嘗試將該參數強制轉換爲Collection。 – 2013-02-28 21:38:58