如何用java发布没有urlencoding查询部分url

时间:2012-09-12 14:44:37

标签: java url-encoding urlconnection

我正在尝试使用已签名的java小程序发布到以下网址:

http://some.domain.com/something/script.asp?param=5041414F9015496EA699F3D2DBAB4AC2|178411|163843|557|1|1|164||attempt|1630315

但是当java建立连接时,java控制台会显示:

网络:连接http://some.domain.com/something/script.asp?param=5041414F9015496EA699F3D2DBAB4AC2%7C178411%7C163843%7C557%7C1%7C1%7C164%7C%7Cattempt%7C1630315

我不希望java从|中查询查询中的管道至%7c。似乎我正在连接的服务不会对param进行urldecode,而且我无法更改服务器端代码。有没有一种方法在java中发布帖子而不转义查询?

我正在使用的java如下:

try {
        URL url = new URL(myURL);
        URLConnection connection = url.openConnection();
        connection.setDoOutput(true);

        OutputStreamWriter out = new OutputStreamWriter(
                connection.getOutputStream());
        out.write(toSend);
        out.close();

        BufferedReader in = new BufferedReader(
                new InputStreamReader(
                        connection.getInputStream()));

        String decodedString = "";

        while ((decodedString = in.readLine()) != null) {
            totalResponse = totalResponse + decodedString;
        }
        in.close();

    } catch (Exception ex) {
    }

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

URL类不进行任何编码。在我的开发服务器上测试这一点证实了这种怀疑。您的代码必须在问卷中包含的代码段之前的某处对'|'字符进行编码。