使用HttpServiceClient(Apache)发送包含特殊字符的字符串时,我有一个关于UTF-8编码的问题
我在下面有一小段代码,其中方法接受字符串并通过Http发送(代码中的代码不完整)。
虽然解码后的字符串似乎没有问题,但我想知道method.addparameter或httpClient.execute(method)是否再次对字符串进行编码。我们遇到的问题是,在客户端,字符串似乎是双重编码的!
例如。 strReq =äöü
import org.apache.commons.codec.DecoderException;
import org.apache.commons.codec.EncoderException;
import org.apache.commons.codec.net.URLCodec;
import org.apache.commons.httpclient.methods.PostMethod;
public class Demo {
public static void Test(String strReq) throws CancellationException, IOException, DecoderException {
PostMethod method = null;
method = new PostMethod("www.example.com");
// Encode the XML document.
URLCodec codec = new URLCodec();
String requestEncoded = new String(strReq);
try {
requestEncoded = codec.encode(strReq);
} catch (EncoderException e) {
}
System.out.println("encoded req = "+requestEncoded);
method.addParameter(Constants.Hdr, requestEncoded);
String str2 = codec.decode(requestEncoded);
System.out.println("str2 ="+str2);
}