[英]Properly encoding percent sign (%) in Apachi Http Client form post using UrlEncode
這似乎是一個非常簡單的問題,但是a,我無法解決,也無法在其他任何地方找到解決方案。 我正在串聯一個包含%的字符串,由於某種原因,它在%之后添加了數字25。 有人知道解決這個簡單問題的方法嗎?
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
在buttonCheck
,它將不會顯示為“%2526value%2526”。 我強烈懷疑您稍后會查看一個值-例如,在URI編碼之后。 找出正在執行的編碼方式以及您實際要編碼的內容。
需要明確的是,25與26是完全不同的。如果完全擺脫26,您會看到相同的事情,
String buttonCheck = "%" + DATABASE.getValue("buttonCheck") + "%";
那時我懷疑你會得到
%25value%25
基本上,只是將%編碼為%25。 例如,這樣做:
import java.net.*;
public class Test {
public static void main(String[] args) throws Exception {
String input = "%value%";
String encoded = URLEncoder.encode(input, "utf-8");
System.out.println(encoded); // Prints %25value%25
}
}
根據對這個問題的回答,我猜想您的字符串中的文字%
已被編碼為%25
。 其中解釋了添加的25
。 如果沒有看到相關的代碼,我們將無法知道為什么它首先到達那里。
當字符串成為URI的一部分時,顯然經過了“百分比編碼”。
如果是這種情況,您不應該提早進行百分比編碼。 代替
String buttonCheck = "&" + DATABASE.getValue("buttonCheck") + "&";
將以URI結尾
"%26value%26"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.