Using matlab.net​.http.Requ​estMessage​.Send with NTLM authentication

Good day,
I have a need to call a web API from my matlab code which has been secured with NTLM authentication on the server side.
I tried the following matlab functionality but cannot seem to get around the authentication problem: 1) webwrite 2) matlab.net.http.RequestMessage.send(scope, options) where options = HTTPOptions('Credentials',Credentials('Username','xyz','Password','abc','Scope',URI(strUrl)),'ConnectTimeout',30)
Can you advise if/how I can make the web call work under NTLM authentication.
Thank you. Thien

답변 (2개)

Thien Pham
Thien Pham 2017년 10월 23일

1 개 추천

Hi Andy,
Below extract from the code, as I can verify it does work for NTLM authentication (in fact according to MS the class should handle any authentication challenges automatically).
You need to replace the variables ending in _XXX suffix with your objects. The returned strContent is a valid JSON string which you then need to parse. There's an example of a working parser class in Matlab.
NET.addAssembly('System'); NET.addAssembly('System.Net'); NET.addAssembly('System.Net.Http'); NET.addAssembly('System.Threading.Tasks'); import System.*; import System.Net.*; import System.Net.Http.*; import System.Net.Http.Headers.*;
clientHandler = HttpClientHandler; clientHandler.Credentials = CredentialCache.DefaultNetworkCredentials; client = HttpClient(clientHandler); client.BaseAddress = Uri(strUrl_XXX); client.Timeout = TimeSpan.FromSeconds(90); client.DefaultRequestHeaders.Accept.Clear(); mediatype = MediaTypeWithQualityHeaderValue('application/json'); client.DefaultRequestHeaders.Accept.Add(mediatype);
jsonParams = this.api_create_json(ParamsStructure_XXX); objParams = StringContent(jsonParams, System.Text.Encoding.UTF8, 'application/json'); response = client.PostAsync(strUrl, objParams).Result;
objContent = response.Content.ReadAsStringAsync(); strContent = char(objContent.Result);
Morrie Gasser
Morrie Gasser 2017년 8월 7일

0 개 추천

Unfortunately, as of R2017a, the HTTP interface (classes in matlab.net.http) and webwrite do not support NTLM. It is supported by webread, but only for the GET method.

댓글 수: 2

Thanks for confirming this Morrie.
I have found a somewhat convoluted workaround by using .NET HttpClient which seems to resolve the authentication issue.
Thien
Thien,
Any chance you could share this workaround? I am experiencing a similar issue.
Thanks, Andy

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 Call Web Services from MATLAB Using HTTP에 대해 자세히 알아보기

질문:

2017년 8월 3일

댓글:

2017년 10월 23일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by