阿帕奇HTTP客戶端表單提交正確編碼百分號(%)這似乎是一個非常簡單的問題,但很可惜,我不能弄明白也不是找到一個解決辦法其他地方。我連接了一個內部有%的字符串,並且由於某種原因它在%之後添加了25。任何人都知道解決這個簡單的問題?使用以UrlEncode
String buttonCheck = "%26" + DATABASE.getValue("buttonCheck") + "%26";
就出來
"%2526value%2526"
編輯:這已經很明顯,這個問題實際上是URL編碼中,我會更多的相關數據添加到這個問題。
我正在開發一款Android應用,從現場解析HTML,並允許用戶通過Android UI與它進行交互。我正在將%編碼爲表單的參數。
public class CLASS extends Activity
{
DefaultHttpClient client = new DefaultHttpClient;
String url = "http://www.url.com"
HttpRequestBase method = new HttpPost(url);
List<NameValuePair> nvps = new ArrayList<NameValuePair>();
nvps.add("buttoncheck", "%26" + DATABASE.getValue("buttonCheck") + "%26");
//DATABASE is simply a class that handles a HashMap
HttpPost methodPost = (HttpPost) method;
methodPost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
execute(method);
}
而不是發送的
buttoncheck=%26value%26
形式的價值,我得到
buttoncheck=%2526value%2526
不能再現。請給出所有相關的代碼。 – Bozho 2010-09-21 06:38:41
我不知道爲什麼它現在是這樣,但只是想指出'%'是ASCII'0x25'。所以至少在那裏它與字符串中的某些東西有關。 – 2010-09-21 06:40:43
@ org.life.java我非常懷疑,因爲25之前出現26.我可以理解,如果它後,但事實並非如此。 DATABASE只是一個具有哈希映射訪問方法的類,沒什麼特別。然後我將buttonCheck添加到另一個用於HttpClient發佈的地圖。嗯,我還應該補充說,我通過Http發送後發送了字符串。我會研究一下。 – 2010-09-21 06:50:09