1

このツールキットを使用して、Rally の Web サービス API をテストしようとしています。Rally の内部セットアップがあります。私のコードは次のようになります。

    RallyRestApi restApi = new RallyRestApi (new URI("https://rally"), "userName", "password");
    restApi.setApplicationName("Test");
    restApi.setWsapiVersion(wsapiVersion);

    String workspaceRef = new String("/workspace/11457676");
    String projectRef = new String("/project/11457760");

    String storyFormattedID = "US576";

    QueryRequest storyRequest = new QueryRequest("HierarchicalRequirement");
    storyRequest.setFetch(new Fetch("FormattedID","Name","Owner"));
    storyRequest.setQueryFilter(new QueryFilter("FormattedID", "=", storyFormattedID));
    storyRequest.setWorkspace(workspaceRef);
    storyRequest.setProject(projectRef);
    QueryResponse storyQueryResponse = restApi.query(storyRequest);
    ....

"...." の前の lase 行は例外を生成します: javax.net.ssl.SSLPeerUnverifiedException: ピアが認証されていません。ブラウザでこのように Web サービスに手動でアクセスすると、証明書エラー「https://rally/slm/webservice/1.29/defect/10509982」があることに気付いた以外は正常に動作します。

誰もこれを経験していますか?ありがとう。

4

4 に答える 4

1

これは、自己署名証明書を使用するサーバーに対してツールキットを内部的にテストしたときに発見された問題です。この関連する質問をチェックしてください:

httpClient での SSLPeerUnverifiedException

特にこの答え:

https://stackoverflow.com/a/9114024/728184

RallyRestApi を拡張し、必要な SSL セキュリティ オーバーライドを構成することで、今すぐこれを実装できます。

import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.conn.ssl.TrustStrategy;

import java.net.URI;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;

public class OnPremRestApi extends RallyRestApi {

    public OnPremRestApi(URI server, String userName, String password) {
        super(server, userName, password);

        try {
            SSLSocketFactory sf = new SSLSocketFactory(new TrustStrategy() {
                public boolean isTrusted(X509Certificate[] certificate, String authType)
                    throws CertificateException {
                    //trust all certs
                    return true;
                }
            }, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
            httpClient.getConnectionManager().getSchemeRegistry()
                .register(new Scheme("https", 443, sf));
        } catch (Exception e) {
            //hmm...
        }
    }
}

次に、コードで RallyRestApi の代わりに OnPremRestApi のインスタンスを使用します。

于 2013-01-24T17:27:57.497 に答える
0

過去に機能していた場合は、おそらくプロキシに関連して、環境で何かが変更された可能性があります。

ここに文書化された setProxy メソッドがあります。これが実際にプロキシ関連である場合、これが役立つことを願っています。

セットプロキシ

public void setProxy(URI プロキシ、文字列のユーザー名、文字列のパスワード)

[Set the authenticated proxy server to use. By default no proxy is configured.][2]

Parameters:
    proxy - The proxy server, e.g. new URI("http://my.proxy.com:8000")
    userName - The username to be used for authentication.
    password - The password to be used for authentication.
于 2013-06-17T14:18:12.290 に答える
0

接続にRallyRestAPiインスタンスを長時間使用しましたが、エラーが発生していないクラスを使用すると、突然SSLPeerUnverified例外がスローされます。RallyRestAPI は今までどのように機能していましたか? 私は1.0.6を使用していますが、1.0.7も試しました

于 2013-06-17T05:58:52.203 に答える