0

ODataで保護されたサービスのエンティティクラスとサービスクラスを生成したい。OData Java拡張ページにはorg.restlet.ext.odata.Generator、URIを取得してディレクトリパラメータを出力するクラスを使用する必要があると書かれています。ただし、ODataサービスが保護されている場合、ジェネレータインスタンスはサービスのユーザー名とパスワードがないとサービスクラスを生成できません。ユーザー名とパスワードをジェネレータークラスに渡す方法が見つかりませんでした。

401HTTP応答コードを取得します。

助けてください。

4

2 に答える 2

1

org.restlet.ext.odata.Generatorクラスのmainメソッドで、次のコードは、setCredentials()メソッドで設定された資格情報の詳細をクリアします。

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

サービスはユーザーパスワードで保護されているため、現在、RESTサービスのクラスを生成できないため、この問題の解決策を提供してください。

次のコードを試して、セキュリティで保護されたサービス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);
    }

}
于 2011-11-08T06:55:36.497 に答える
0

OData拡張機能によって生成されるorg.restlet.ext.odata.Serviceサブクラスでは、setCredentials()を呼び出して、スキーム(BASIC?)、ログイン(識別子)、パスワード(シークレット)を含むチャレンジレスポンスのインスタンスを渡すことができます。

于 2011-09-15T08:33:28.630 に答える