2016-02-07 38 views
2

我正在使用Restlet2.3來運行REST API測試自動化。如何使用密鑰指定Restlet客戶HTTP標頭爲「授權」

新功能有一個客戶HTTP標頭將令牌傳遞給服務。

Form headers = (Form)resource.getRequestAttributes().get("org.restlet.http.headers"); 
if (headers == null) { 
    headers = new Form(); 
    resource.getRequestAttributes().put("org.restlet.http.headers", headers); 
}   

... 

headers.add(key, value); 

該代碼有效。現在,客戶HTTP標頭被定義爲「授權」。上面的代碼似乎沒有正確傳遞標題。這並不是ChallengeScheme所涉及的問題。

我在SoapUI和Postman上測試了這個場景。兩者都有效。

有人知道restlet支持嗎?

+0

... headers.add(key,value)..是代碼的一部分。 – zli

回答

2

事實上,在執行請求時,您無法用Restlet覆蓋標準標頭,如Authorization

如果你想提供一個安全令牌,你可以使用這種方法:

String pAccessToken = "some token"; 
ChallengeResponse challengeResponse = new ChallengeResponse(
         new ChallengeScheme("", "")); 
challengeResponse.setRawValue(pAccessToken); 
clientResource.setChallengeResponse(challengeResponse); 

這種方式,你將有隻有在Authorization頭中的令牌(在同一個空格開頭 - 所以不要」 t忘記調整值)。

+0

謝謝Thierry,我想我通過使用這種方法取得了進展。該服務收到授權令牌作爲集合。我認爲格式是「授權令牌,它不是預期的。我得到這條線的錯誤:slurper.parseText(resource.post(rep).getText())。第二個空間將被刪除。我可以修改它的內部資源? – zli

+0

實際上,格式將是'Authorization:token'。標題值中會有額外的空間...我不確定要理解什麼'slurper.parseText(resource.post(代碼).getText())'和它在哪裏發生;-)隨意給更多的細節! –

+0

我想知道在哪裏刪除資源內額外的空間。 – zli