【问题标题】:HTML POST insert line break in parametersHTML POST 在参数中插入换行符
【发布时间】:2015-03-02 21:28:48
【问题描述】:

目前我正在尝试使用hilite.me/api 来格式化Java 代码。一切正常,但唯一的问题是\n 换行符似乎被忽略了,输出只是一长行。任何人都知道我如何正确地将换行符传递到 POST 请求中。谢谢。 API的参数应该如下:code=要输入的Java代码。 lexer= 格式化语言(在本例中为 Java)

我的代码:

public static final String USER_AGENT = "Mozilla/5.0", HILITE_URL = "http://hilite.me/api";

public static String hilite(String lang, String code) throws Exception {
    URL obj = new URL(HILITE_URL);
    HttpURLConnection conn = (HttpURLConnection) obj.openConnection();

    conn.setRequestMethod("POST");
    conn.setRequestProperty("User-Agent", USER_AGENT);

    String par = "&code=" + code.replaceAll("\n", "\r\n") + "&?lexer=" + lang;

    conn.setDoOutput(true);
    DataOutputStream dos = new DataOutputStream(conn.getOutputStream());
    dos.writeBytes(par);
    dos.flush();
    dos.close();

    int res = conn.getResponseCode();

    if(res == 200){
        StringBuilder sb = new StringBuilder();
        String in;
        BufferedReader read = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        while((in = read.readLine()) != null)
            sb.append(in + "\n");
        read.close();
        return sb.toString();
    }else{
        System.err.println("UNABLE TO CONNECT! WITH RES: " + res);
        return null;
    }
}

【问题讨论】:

    标签: java html post line newline


    【解决方案1】:

    我不确定这是编码错误还是 HttpURLConnection 的默认编码方法是什么,但可能它没有正确编码 \n。

    我相信 ASCII 换行符是

    %0A
    

    也许可以尝试使用

    URLEncoder.encode(code)
    

    【讨论】:

    • 所有这一切似乎都很好,因为输出与网站显示的不一样......
    【解决方案2】:

    首先,我建议使用高级库来调用最明显的 RESTful WebService。 Jersey - JAX-RS 的参考实现应该足够了。

    仅当由于某种原因无法做到这一点时,您才需要确定 Web 服务支持或假定哪些编码。显然,在您的情况下,这是默认的application/x-www-form-urlencoded。将空格替换为+ 字符,并将[0-9A-Za-z] 之外的任何字符替换为其 URL 编码(%HH 与 HH 十六进制 ASCII 数值)。

    java.net.URLEncoder 班级将为您完成这项工作,没有什么理由不使用它。

    【讨论】:

      猜你喜欢
      • 2011-04-28
      • 2021-10-22
      • 2019-07-26
      • 2012-03-05
      • 2014-01-09
      • 2010-10-26
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      相关资源
      最近更新 更多