2013-05-07 3 views
1

Я запускаю хэш-таблицу в приложении для Android, которое я разрабатываю. Когда я запускаю действие, он преобразует содержимое «ht» в символы ASCII. Кто-нибудь знает, как предотвратить это?Предотвращение перехода Hashtable на ASCII

В принципе, мне нужно декодировать закодированный текст и использовать результат в строке. Для работы URL, который используется в строке, не может быть закодирован в нем.

Hashtable

@SuppressWarnings("unchecked") 
private void executeAsyncTask(){ 
Hashtable<String,String> ht=new Hashtable<String,String>(); 
GetDeptAyncTask async=new GetDeptAyncTask(); 
    ht.put("?TYPE=leagueSearch&JSON=1","&SEARCH=test"); 
    try { 
    URLDecoder.decode(""+ht, "UTF-8"); 
} catch (UnsupportedEncodingException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 
    @SuppressWarnings("rawtypes") 
    Hashtable[] ht_array={ht}; 
    async.execute(ht_array); 
} 

Попытка использовать его в строке

protected String doInBackground(Hashtable<String,String>... params) { 
    @SuppressWarnings("rawtypes") 
    Hashtable ht=params[0]; 
    @SuppressWarnings("unchecked") 
    String json=HelperHttp.getJSONResponseFromURL(BaseUrl+"2013/export", ht); 

Как "ХТ" читается в "JSON" струна

?%3FTYPE%3DleagueSearch%26JSON%3D1=%26SEARCH%test 

Как URL должен быть прочитан

?TYPE=leagueSearch&JSON=1&SEARCH=test 

LogCat для "ХТ"

?:??: W/?(?): Hashtable {?TYPE=leagueSearch&JSON=1=&SEARCH=test} 

LogCat для "JSon" строка

?:??: W/?(?): URL==>HIDDENURL/export?%3FTYPE%3DleagueSearch%26JSON%3D1=%26SEARCH%test 

?:??: W/?(?): Json Response==><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">.... 

?:??: W/?(?): at org.json.JSONObject.<init>(JSONObject.java:127) 

?:??: W/?(?): at myapp.app.MainActivity$GetDeptAyncTask.parseJsonString(MainActivity.java:80) 
+0

Вы посылаете это через HTTP? – sanbhat

+0

Да. строка «BaseUrl» настроена как http: // .... Если это то, что вы имеете в виду. – localhost

+0

Я хотел проверить, передаете ли вы Hashtable по протоколу HTTP, и выглядит так, как будто .. в этом случае все содержимое будет закодировано. – sanbhat

ответ

1

Вы можете использовать java.net.URLDecoder для декодирования закодированного текста

URLDecoder.decode("%3FTYPE%3DleagueSearch%26JSON%3D1=%26SEARCH%3Dtest", "UTF-8") 

будет производить

?TYPE=leagueSearch&JSON=1=&SEARCH=test 
+0

Спасибо! Это должно быть правильно. Я попытался добавить это, но ничего не изменилось. Я все еще получаю такой же результат после его изменения: http://pastie.org/7813425. Какие-либо предложения? – localhost

+0

Это действительно полезно только после того, как строка была использована. Мне нужен способ декодирования закодированного текста, прежде чем он будет помещен в строку. – localhost

Смежные вопросы