2012-06-11 61 views
1

XML不是編碼正確的 - 任何幫助的HttpClient - UrlEncodedFormEntity XML編碼的NameValuePair

List<NameValuePair> formparams = new ArrayList<NameValuePair>(); 
      formparams.add(new BasicNameValuePair("VENDOR", "pradeep"));    
      formparams.add(new BasicNameValuePair("REQTYPE", "ExternalSystem")); 
      formparams.add(new BasicNameValuePair("DATA", "<?xml version=\"1.0\" encoding=\"UTF-8\"?>")); 
      UrlEncodedFormEntity entity = new UrlEncodedFormEntity(formparams, "UTF-8"); 

我出來是VENDOR=pradeep&REQTYPE=ExternalSystem&DATA=%3C%3Fxml+version%3D%221.0%22+encoding%3D%22UTF-8%22%3F%3E

,但我預計這一點

VENDOR=D-B165&REQTYPE=EXRCTRFREQ&DATA=<?xml version=\"1.0\" encoding=\"UTF-8\"?> 

任何一個如何做到以上

謝謝,Pradeep

回答

1

它看起來像你的UrlEncodedFormEntity()調用的輸出是正確的 - 它的URL編碼了所有的NameValuePairs,它們的形式爲ala Percent-encoding

你不提你的預期輸出的使用情況,但是這會做你想要什麼,只需串接namevaluepairs中W/O編碼:

StringBuilder sb = new StringBuilder(); 
Iterator<NameValuePair> i = formparams.iterator(); 
while(i.hasNext()) 
{ 
    sb.append(i.next().toString()); 
    if(i.hasNext()) 
     sb.append("&"); 
} 

,如果你仍然需要一個HttpEntity那輸出的榮譽,你可以嘗試使用類似的StringEntity:

HttpEntity entity = new StringEntity(sb.toString()); 
+0

這正是我想要的,非常感謝你 – pradeep