2014-10-01 32 views
2

我想從我的Java應用程序從SalesForce訪問REST web服務。 我正在使用Jersey進行web服務調用。有沒有辦法讓澤西島不要特殊符號網址安全?

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"); 

} 

我的問題是,籃網是如此漂亮,它改變了+符號%2B和+符號%3D我queryParam但SalesForce公司不喜歡這樣。 它也是這樣做的頭。如果我的accessToken包含一個特殊字符,我將得到一個401(UNAUTHORIZED)響應。

有沒有辦法讓澤西島沒有特殊符號的網址安全?

回答

1

由於它是一個GET請求,所以查詢參數是url編碼是正確的。

爲什麼在查詢中放置符號+而不是空格?你試過把空間放進去嗎?服務器真的需要一個+符號而不是空格嗎?

+0

將+更改爲空格時有效。我從那裏拿了+的例子,但是這是使用捲曲。 – Xymon 2014-10-01 12:46:15