有没有办法要求泽西岛不要制作特殊符号url-safe?

时间:2014-10-01 10:33:52

标签: java url jersey salesforce

我正在尝试从我的java应用程序访问SalesForce中的REST Web服务。 我正在使用Jersey进行网络服务电话。

private String getRegisterId(String registerName, String accessToken) throws JSONException, BusinessException {
    ClientConfig config = new DefaultClientConfig();
    config.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE);
    Client client = Client.create(config);

    WebResource wr = client.resource(salesforeceUrl + "/data/v31.0/query");
    JSONObject register = wr //
            .queryParam("q", "SELECT+Id+FROM+HealthData_Register__c+WHERE+name+=+'" + registerName + "'+AND+IsDeleted+=+false") //
            .header(HttpHeaders.AUTHORIZATION.getValue(), "Bearer " + accessToken) //
            .get(JSONObject.class);

    JSONArray records = register.getJSONArray("records");
        return records.getJSONObject(0).getString("Id");

}

我遇到的问题是Jersey非常好,它将+符号更改为%2B,+符号更改为%3D for queryParam,但SalesForce不喜欢这样。 它也为标题执行此操作。如果我的accessToken包含一个特殊字符,我将得到一个401(UNAUTHORIZED)响应。

有没有办法要求泽西岛不要制作特殊符号url-safe?

1 个答案:

答案 0 :(得分:1)

由于GET请求是正确的,因此查询参数是url编码的。

为什么在查询中放置符号+而不是空格?你尝试过只放置空间吗?真的是服务器期望+符号而不是空格吗?