atcelt
Rāda rezultātus vaicājumam 
Tā vietā meklēt 
Vai jūs gribējāt rakstīt šādi? 
Manas jomas

Sign in

Sign in or create a new user to get relevant areas automatically added to your areas.

Highlighted
CONTRIBUTOR **

Integrācijas modulis - REST autorizācijas problēmas.

Labdien!

 

Mēģinot saņemt datus caur REST, tiek izdots autorizācijas kļūdas paziņojums.

 

Pieprasījums:

UnicodeString uTmp, UserPasw="<lietotāja vārds>:<parole>";
TBase64Encoding *Base64Encodingparole;

rstClient->BaseURL = "http://<servera IP>:7379/rest/TDdmMUSar/default";
rstRequest->Method = rmGET;
rstRequest->Params->Clear();
rstRequest->Params->AddItem();
rstRequest->Params->Items[0]->Kind = pkHTTPHEADER;
rstRequest->Params->Items[0]->Name = L"Authorization";
Base64Encoding = new TBase64Encoding();
uTmp = Base64Encoding->Encode(UserPasw);
// rstRequest->Params->Items[0]->Value = " Basic "+Base64Encoding->Encode(UserPasw);
rstRequest->Params->Items[0]->Value = Base64Encoding->Encode(UserPasw);

try
{
rstRequest->Execute();
}
catch(Exception &e)
{
ShowMessage("Error in connection execute !!! "+e.Message);
}

 

Saņemtā REST atbilde:

 

status code=401 Unsupported Authorization scheme.

 

Nepieciešama palīdzība problēmas risināšanā! Paldies!

1 ATBILDĒT 1
Highlighted

Tēma: Integrācijas modulis - REST autorizācijas problēmas.

Labdien, @GunaK!

 

Atvainojos par novēloto atbildi.

 

Pirmkārt, jāpārliecinās ka Basic autorizācija ir atļauta sistēmā: sistēma->administrēt->web drošības uzstādījumi->autentifikācijas metodes 

 

web.png

 

Pēc koda spriežot pareizais variants ir tas kas tagad aizkomentēts  rstRequest>Params->Items[0]>Value = " Basic "+Base64Encoding>Encode(UserPasw); 

 

Serverī var ieslēgt http pieprasījumu logošanu un pārliecināties vai pieprasījumā patiešām atnāk pareizi saformēts headeris - servera config.xml jānorāda parametri loglevel un logevents, apmēram tā:

<?xml version="1.0" encoding="UTF-8"?>
<ftgserver port="4674" rest="81" dmsystemttl="0" standalone="3" loglevel="5" logevents="[webrequest]">
</ftgserver>

 

Tad Log apakšfolderī katrs http pieprasījums tiks ielogots ar visiem headeriem šādi:

17082020 13:17:28 7376 INFO 2 rest WebRequest Http request start 0002:127.0.0.1 "Accept-Encoding: gzip,deflate","Authorization: Basic xxxxx","Content-Type: application/xml","Content-Length: 2155","Host: localhost:81","Connection: Keep-Alive","User-Agent: Apache-HttpClient/4.1.1 (java 1.5)" POST /rest/TNdmPvzIn/166849/attachments HTTP/1.1 200
17082020 13:19:09 7376 INFO 2 rest WebRequest Http request stop 0002:127.0.0.1 "Accept-Encoding: gzip,deflate","Authorization: Basic xxxxx","Content-Type: application/xml","Content-Length: 2155","Host: localhost:81","Connection: Keep-Alive","User-Agent: Apache-HttpClient/4.1.1 (java 1.5)" POST /rest/TNdmPvzIn/166849/attachments HTTP/1.1 "Organization: 2, ""Programmas izstrade - MSSQL""" 201 (took 101078 ms)

 

Authorization headera vērtībai jābūt kā piemērā: "Authorization: Basic xxxxx"