Problem mit HttpRequest.GetResponse

Bild Microsoft Dynamics NAV 2017

Problem mit HttpRequest.GetResponse

Beitragvon Anistou » 14. Dezember 2021 18:00

Habe ein kleines Problem.

Ich sende Daten an eine andere SOAP Schnittstelle. Soweit klappt auch alles. Nur wenn die andere Seite Muckt, dann bekomme ich nicht das Problem zurĂĽck, weil httprequest mit einer Fehlermeldung abbricht.

Habe es zwar in einer TryFunction, was in den meisten Fällen mir auch egal ist, was es für ein Fehler ist.

Aber es gibt auch so etwas wie:
Ausgabe: HTTP/1.1 404 Not Found

Aber eigentlich bräuchte ich:
No order found with given ID: 3548773

Was im ResponeStream steht...

Code: Alles auswählen
LOCAL [TryFunction] CheckResponse(HttpRequest : DotNet "System.Net.HttpWebRequest")
HttpResponse := HttpRequest.GetResponse;
HttpStatus := HttpResponse.StatusCode;


Bricht mir also in der ersten Zeile ab und ich komme nicht an den Response.

Einer eine Idee?
Anistou
 
Beiträge: 15
Registriert: 6. Mai 2021 10:56
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Re: Problem mit HttpRequest.GetResponse

Beitragvon Raik Zobel » 6. Januar 2022 17:18

Hi,

probiere es mit HttpClient anstatt HttpRequest.
Hier ein kurzes Beispiel mit Auswertung der Antwort am Ende. WĂĽrde mich ĂĽber RĂĽckmeldung bezĂĽglich der Alternativen freuen.

Code: Alles auswählen
Uri := Uri.Uri(Url);
BaseUrl := Uri.GetLeftPart(UriPartial.Authority);
QueryUrl := Uri.AbsolutePath + Uri.Query;
Method := 'GET';
User := 'TestUser';
Pass := 'TestPass';

HttpClient := HttpClient.HttpClient();
HttpClient.DefaultRequestHeaders.Add('ApiKey','Testkey');
HttpClient.DefaultRequestHeaders.Add('Secret','TestSecret');

HttpClient.BaseAddress := Uri.Uri(BaseUrl);
HttpClient.Timeout := 5000;

//Auth
IF User+Pass <> '' THEN BEGIN
  byteArray := Encoding.ASCII.GetBytes(User+':'+Pass);
  HttpClient.DefaultRequestHeaders.Authorization := AuthenticationHeaderValue.AuthenticationHeaderValue('Basic', Convert.ToBase64String(byteArray));
END;

CASE Method OF
  'GET':   
    HttpResponseMessage := HttpClient.GetAsync(QueryUrl).Result;
  'POST':
    HttpResponseMessage := HttpClient.PostAsync(QueryUrl,HttpContent).Result;
  'PUT':   
    HttpResponseMessage := HttpClient.PutAsync(QueryUrl,HttpContent).Result;
  'DELETE':
    HttpResponseMessage := HttpClient.DeleteAsync(QueryUrl).Result;
END;


// Response auswerten:
//HttpResponseMessage.EnsureSuccessStatusCode(); // Throws an error when no success
//HttpResponseMessage.IsSuccessStatusCode; // True or false


// Response als String
Encoding := Encoding.GetEncoding(HttpResponseMessage.Content.Headers.ContentType.CharSet);
byteArray := HttpResponseMessage.Content.ReadAsByteArrayAsync().Result;
ResponseMessageString := Encoding.GetString(byteArray, 0, byteArray.Length);

// 1. Alternative (ungetestet)
ResponseMessageString := HttpResponseMessage.Content.ReadAsStringAsync().Result;

// 2. Alternative (ungetestet)
ResponseMessageString := HttpResponseMessage.ReasonPhrase;




Code: Alles auswählen
Name   DataType   Subtype   Length
Uri   DotNet   System.Uri.'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'   
UriPartial   DotNet   System.UriPartial.'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'   
HttpClient   DotNet   System.Net.Http.HttpClient.'System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'   
HttpContent   DotNet   System.Net.Http.HttpContent.'System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'   
HttpResponseMessage   DotNet   System.Net.Http.HttpResponseMessage.'System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'   
byteArray   DotNet   System.Array.'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'   
Encoding   DotNet   System.Text.Encoding.'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
Benutzeravatar
Raik Zobel
 
Beiträge: 279
Registriert: 4. März 2013 13:43
Realer Name: Raik Zobel
Arbeitsort: Leipzig
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 4.00SP3, 2013R2, 2016


ZurĂĽck zu NAV 2017

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast