2013-12-10 3 views
2

Я хочу подключиться к vCloud Dirrector через rest api. Моя правильная команда локон для входа вНе удается отправить правильный запрос на отдых

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

Спасибо. Да, это hepls, но у меня есть 401 http code now. –

+0

401 означает несанкционированный доступ, поэтому проверьте свое имя пользователя и пароль. Из командной строки curl выглядит так, как ваше имя пользователя должно быть «adminstrator @ System» и пароль «qwe123», а не то, что у вас есть, когда система находится в поле пароля вызова setAuthentication. –

+0

Мне пришлось дважды подумать, прежде чем задавать этот простой вопрос. Это помогает, спасибо. –

Смежные вопросы