1

xml 编码不正确 - 任何帮助

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\"?>

上面的任何一个怎么做

谢谢, 普拉迪普

4

1 回答 1

1

看起来您的 UrlEncodedFormEntity() 调用的输出是正确的 - 它在 formparms ala Percent-encoding中对所有 NameValuePairs 进行了 URL 编码。

您没有提及预期输出的用例,但这将通过简单地连接不带编码的 NameValuePairs 来满足您的要求:

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() );
于 2012-06-11T21:19:23.713 回答