You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java调用ColdFusion 2016 REST API遇ParseException错误求助

Fixing "java.text.ParseException: Expected separator '/' instead of ';'" When Calling ColdFusion 2016 REST API from Java

我之前碰到过一模一样的问题,这个错误根源是ColdFusion 2016的REST解析器对HTTP请求头的格式要求比较严格——默认情况下,Java的HttpURLConnection会自动给请求添加带分号的Accept头(比如text/html;charset=utf-8),而ColdFusion的解析逻辑没法正确处理这种带额外参数的头格式,就会抛出这个分隔符异常。

解决方案:显式设置合规的请求头

你只需要在Java代码里手动设置Accept和(可选)Content-Type头,去掉多余的分号参数,让ColdFusion能正确解析。具体修改如下:

在你的Java代码中,调用con.setRequestMethod("GET");之后,添加这两行:

// 显式设置Accept头为ColdFusion能处理的格式
con.setRequestProperty("Accept", "text/plain");
// GET请求通常不需要Content-Type,但加上能避免潜在的解析问题
con.setRequestProperty("Content-Type", "text/plain");

修改后的完整Java代码

package javaapplication2;

import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import java.security.cert.X509Certificate;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import javax.net.ssl.HttpsURLConnection;

public class JavaApplication2 {
    public static void main(String[] args) throws Exception {
        TrustManager[] trustAllCerts = new TrustManager[] {
            new X509TrustManager() {
                public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                    return null;
                }
                public void checkClientTrusted(X509Certificate[] certs, String authType) {
                }
                public void checkServerTrusted(X509Certificate[] certs, String authType) {
                }
            }
        };

        SSLContext sc = SSLContext.getInstance("SSL");
        sc.init(null, trustAllCerts, new java.security.SecureRandom());
        HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());

        HostnameVerifier allHostsValid = new HostnameVerifier() {
            public boolean verify(String hostname, SSLSession session) {
                return true;
            }
        };
        HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid);

        String url = "http://localhost:8501/rest/api/test";
        URL obj = new URL(url);
        HttpURLConnection con = (HttpURLConnection) obj.openConnection();

        con.setRequestMethod("GET");
        // 添加这两行请求头设置
        con.setRequestProperty("Accept", "text/plain");
        con.setRequestProperty("Content-Type", "text/plain");

        int responseCode = con.getResponseCode();
        System.out.println("\nSending 'GET' request to URL : " + url);
        System.out.println("Response Code : " + responseCode);

        BufferedReader in = new BufferedReader(
            new InputStreamReader(con.getInputStream()));
        String inputLine;
        StringBuffer response = new StringBuffer();

        while ((inputLine = in.readLine()) != null) {
            response.append(inputLine);
        }
        in.close();

        //print result
        System.out.println(response.toString());
    }
}

额外排查点

  • 确认你的ColdFusion REST服务已经正确注册:在ColdFusion Administrator里,检查REST Services面板,确保你的API路径/rest/api已经正确映射到对应的CF组件。
  • 如果你后续需要返回JSON格式,只需要把Accept头改成application/json,同时调整ColdFusion函数的returntype为struct或者json即可。

内容的提问来源于stack exchange,提问作者toni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:28:45