Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 关于Http(Apache)上的编码字符串_Java_Http_Encoding - Fatal编程技术网

Java 关于Http(Apache)上的编码字符串

Java 关于Http(Apache)上的编码字符串,java,http,encoding,Java,Http,Encoding,在使用HttpServiceClient(Apache)发送包含特殊字符的字符串时,我有一个关于UTF-8编码的问题 我在下面有一小段代码,其中方法获取字符串并通过Http发送(代码中没有完全完成) 虽然解码后的字符串似乎可以正常工作,但我想知道method.addparameter或httpClient.execute(method)是否再次对字符串进行编码。我们的问题是,在客户端,字符串似乎是双重编码的 例如,strReq=äöü import org.apache.commons.code

在使用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);
        }

默认的post方法是application/x-www-form-urlencoded,因此您不需要自己执行此操作。您的意思是此处不需要URLCodec??但我没有对URL进行编码……如果您要发送文件,您应该将post方法设置为multipart/form data,并且不必担心对文件进行编码。这将由我的图书馆处理对不起,什么图书馆。我迷路了。你能详细说明一下吗?你是说字符串不需要URLCodec吗?