2010-10-20 108 views
0

我想生成OData安全服務的實體類和服務類。 在OData Java擴展頁面中,我寫了我需要使用org.restlet.ext.odata.Generator類,它應該獲得uri並輸出目錄參數。 但是,如果我的OData服務受到保護,那麼生成器實例無法生成服務類別,而無需服務的用戶名和密碼。 我沒有找到任何方式將用戶名和密碼傳遞給生成器類。使用OData安全服務

我得到401個HTTP響應代碼。

請幫忙。

回答

0

在由OData擴展生成的org.restlet.ext.odata.Service子類中,可以調用setCredentials()並傳遞ChallengeResponse的一個實例,包括scheme(BASIC?),login(identifier)和password(secret )。

1

在org.restlet.ext.odata.Generator類的main方法中, 以下代碼將清除setCredentials()方法中設置的憑據詳細信息。

Service service = new Service(dataServiceUri); 
if(service.getMetadata() == null) 
{ 
    errorMessage = "Cannot retrieve the metadata."; 
} 

請提供針對此問題的解決方案,我目前無法爲服務固定用的用戶密碼爲我的休息服務的類。

我嘗試下面的代碼來生成代碼爲我的安全服務URI:

import org.restlet.ext.odata.Generator; 
import org.restlet.ext.odata.Service; 
import org.restlet.data.ChallengeResponse; 
import org.restlet.data.ChallengeScheme; 

public class ODataRestletGenerator extends Service { 

    public ODataRestletGenerator(String serviceUri) { 
     super(serviceUri); 
    } 

    public static final String APPLICATION_URI = "http://ldcigkd.xxx.yyy.corp:50033/xxx/opu/sdata/IWCNT/CUSTOMER/"; 

    public static void main(String[] args) { 

     // Add the client authentication to the call 
     ChallengeScheme scheme = ChallengeScheme.HTTP_BASIC; 
     ChallengeResponse credentials = new ChallengeResponse(scheme, "user", "pwd");  
     new ODataRestletGenerator(APPLICATION_URI).setauth(credentials); 

     String[] arguments = { APPLICATION_URI, "/customer/src" }; 
     Generator.main(arguments); 
    } 

    private void setauth(ChallengeResponse credentials) { 

     super.setCredentials(credentials); 
    } 

}