我正在尝试从我的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?
答案 0 :(得分:1)
由于GET请求是正确的,因此查询参数是url编码的。
为什么在查询中放置符号+而不是空格?你尝试过只放置空间吗?真的是服务器期望+符号而不是空格吗?