2013-12-10 82 views
2

我想通過休息API連接到vCloud Dirrector。 我正確的curl命令即可登錄無法發送正確的休息請求

curl -i -k -H "Accept:application/*+xml;version=1.5" -u "[email protected]:qwe123" -X POST https://172.16.8.240/api/sessions 

但我不能把它寫在D.

import std.stdio; 
import std.string; 
import std.net.curl; 

int main(string[] argv) 
{ 
    auto httpClient = HTTP(); 
    httpClient.clearRequestHeaders(); 
    httpClient.addRequestHeader("Accept", "application/*+xml;version=1.5"); 
    httpClient.authenticationMethod = HTTP.AuthMethod.basic; 
    httpClient.setAuthentication("administrator", "System:qwe123"); 
    try 
    { 
     auto a = post("https://172.16.8.240/api/sessions", "", httpClient); 
    } 
    catch (CurlException ex) 
    { 
     writeln(ex); 
    } 

    return 0; 
} 

我CurlException

[email protected]\net\curl.d(3504): Peer certificate cannot be auth 
enticated with given CA certificates on handle 1D53758 
---------------- 
0x00409456 in stdexceptionenforceEx at C:\D\dmd2\src\phobos\std\exception.d(527) 

0x0043D88A in stdnetcurlCurl_check 
0x00408742 in stdnetcurlpost at C:\D\dmd2\src\phobos\std\net\curl.d(423) 
0x004020D4 in D at C:\Users\yrybalka\documents\visual studio 2013\Projects\visua 
lStudioD\visualStudioD\main.d(15) 
0x0042E670 in rtdmain2_d_run_mainrunAll__lambda1 
0x0042E643 in rtdmain2_d_run_mainrunAll 
0x0042E55B in _d_run_main 
0x0042E378 in main at C:\Users\yrybalka\documents\visual studio 2013\Projects\vi 
sualStudioD\visualStudioD\SuperClass.d(3) 
0x0046C2C9 in mainCRTStartup 
0x76CA495D in BaseThreadInitThunk 
0x778D98EE in RtlInitializeExceptionChain 
0x778D98C4 in RtlInitializeExceptionChain 

也許我應該用一些編譯器關鍵HTTPS?或者我的代碼錯了?

+0

你看過嗎? http://stackoverflow.com/questions/11750413/ssl-peer-not-authenticated-error-with-httpclient-4-1 – brandonscript

回答

3

作爲一種解決方法,至少,如果你在裏面添加

httpClient.verifyPeer = false; 
httpClient.verifyHost = false; 

執行請求前,應該關閉此錯誤(通過實際不檢查證書)。我不知道如何添加你的根證書,也許別人可以回答這個問題。

+0

謝謝。是的,它會出現,但我現在有了401個http代碼。 –

+0

401表示未經授權,請檢查您的用戶名和密碼。從curl命令行看起來,您的用戶名應該是「adminstrator @ System」和密碼「qwe123」,而不是系統在setAuthentication調用的密碼字段中。 –

+0

在問這個簡單的問題之前,我必須考慮三次。它有幫助,謝謝。 –

相關問題