Sonarqubeのコードの匂いの結果を表示できるWebアプリケーションを作成していますが、時にはカスタムルールを作成することもできます。現在、JavaのHTTPClientまたはJsのXMLHttpRequestを使用してサーバーからデータを取得できます。しかし、私は本当にサーバーへのPOSTメッセージに固執しています。SonarQube Web APIを使用してログインするには
はJsのでは、私がログインするために、これらのコードを試してみた:
request.open("POST", "http://localhost:9000/api/authentication/login?login=admin&password=admin", true);
request.send();
応答ステータスコードが成功した200
です(CORSは私のクロムで無効にされています)。しかし、私は結果が不正、401
で許可
request.open("POST", "http://localhost:9000/api/qualityprofiles/copy?fromKey=" + fromKey + "&toName=" + name, true);
request.send();
を必要とするいくつかのアクションを実行しようとします。
は、いくつかの研究の後、私は
var base64encodedData = ("admin:admin").toString('base64');
request.open("POST", "http://localhost:9000/api/qualityprofiles/copy?fromKey=" + fromKey + "&toName=" + name, true);
request.setRequestHeader("Authorization", "Basic " + base64encodedData);
request.send();
応答が405
あるに私のコードを変更した、いかなる方法が見つかりませんでした。
さらに調査したところ、request.withCredentials
はtrue
に設定する必要があります。私は追加して、私は再びCORSの問題がある。 (CORSが無効になっている)
(私はSonarqube APIについて混乱しています。これは私の意見では、このAPIの目的は、Sonarqubeサーバーで再生する方法を簡略化することですCORSを許可していないため、自分のWebページでAPIを使用できないのですか?)
Jsに運がないので、Javaに切り替えました。 (私もログインやった)
HttpPost post = new HttpPost("http://localhost:9000/api/qualityprofiles/copy?fromKey=AV7dToVK_BWPTtE1c9vU&toName=testtt");
try(CloseableHttpClient httpClient = HttpClients.createDefault();
CloseableHttpResponse response = httpClient.execute(post);) {
System.out.println(response.getStatusLine());
}
私が得た::
は、Javaでは、私はこれを実行した
HTTP/1.1 401
は、その後、私は、このリンクをたどって自分のコードを変更についてBasic Authentication with the API
CredentialsProvider provider = new BasicCredentialsProvider();
UsernamePasswordCredentials credentials
= new UsernamePasswordCredentials("admin", "admin");
provider.setCredentials(AuthScope.ANY, credentials);
HttpClient client = HttpClientBuilder.create()
.setDefaultCredentialsProvider(provider)
.build();
HttpResponse response = client.execute(
new HttpPost("http://localhost:9000/api/qualityprofiles/copy?fromKey=AV7dToVK_BWPTtE1c9vU&toName=testtt"));
int statusCode = response.getStatusLine().getStatusCode();
System.out.println(statusCode);
もう一度、401
私の質問は、JavaコードまたはJsコード(推奨)を使用してSonarQubeサーバーへの承認メッセージを送信する方法です。
お気軽にお問い合わせください!
は、UPDATE、私は今、カールとしようとしている
は、ここで私は、端末
curl -X POST -u deb3dd4152c571bcdb7b965e1d99b23a4e5c9505: http://localhost:9000/api/qualityprofiles/copy?fromKey=AV7dToVK_BWPTtE1c9vU&toName=test_file
で実行され、私は知らないこの応答を、得たものであるか
{"errors":[{"msg":"The 'toName' parameter is missing"}]}
CURLの第2の更新
私が走った:
curl -X POST -F "fromKey=AV7dToVK_BWPTtE1c9vU;toName=test_file" -v -u deb3dd4152c571bcdb7b965e1d99b23a4e5c9505: http://localhost:9000/api/qualityprofiles/copy
結果:同じ問題を持って誰のための
* Trying ::1...
* Connected to localhost (::1) port 9000 (#0)
* Server auth using Basic with user 'deb3dd4152c571bcdb7b965e1d99b23a4e5c9505'
> POST /api/qualityprofiles/copy HTTP/1.1
> Host: localhost:9000
> Authorization: Basic ZGViM2RkNDE1MmM1NzFiY2RiN2I5NjVlMWQ5OWIyM2E0ZTVjOTUwNTo=
> User-Agent: curl/7.49.1
> Accept: */*
> Content-Length: 179
> Expect: 100-continue
> Content-Type: multipart/form-data; boundary=------------------------c22bb5dd76f44ac4
>
< HTTP/1.1 100
< HTTP/1.1 400
< Content-Type: application/json
< Content-Length: 56
< Date: Wed, 04 Oct 2017 00:43:47 GMT
< Connection: close
<
* Closing connection 0
{"errors":[{"msg":"The 'toName' parameter is missing"}]}
これらの資格情報でSonarポータルにログインできますか? – Rizwan
@Rizwanはい、私はログインのデフォルトのログイン情報を使用しています:admin、pwd:admin – MaXon
私は 'request.open(" POST "、" http:// localhost: ' – MaXon