Webdienst / Parameter

16. November 2020 11:11

Hallo,

ich zwar ziemlich neu im Nav-Gebiet, spreche aber seit einigen Tagen erfolgreich ein paar Webdienste an.
Diese werden nicht von mir eingerichtet (!).

Nun muss ich einen Dienst ansprechen, der anscheinend Parameter verlangt (?).
Hier die OnPageOpen-Methode:
Code:
PeriodType := PeriodType::Day;
QtyType := QtyType::"Net Change";

OrderPlanCode.SETRANGE("Order Type",OrderPlanCode."Order Type"::Purchase);
IF OrderPlanCode.FINDFIRST THEN BEGIN
  OrderCodeFilter := OrderPlanCode."Order Code";
  OrderDescription := OrderPlanCode.Description;
  Name := OrderPlanCode."Vendor/Customer Name";
END ELSE
  OrderCodeFilter := '';

SetColumns(SetWanted::Initial);


Wenn ich die URL ohne Parameter eingebe, bekomme ich folgende Fehlerbeldung:
Code:
{"error":{"code":"BadRequest_NotFound","message":"No HTTP resource was found that matches the request URI 'http://[x]:7048/[x]/ODataV4/Company/OrderPlanPurchase'."}}


Mit Parameter ([server]/ODataV4/Company[..]/OrderPlanPurchase("Artikel","100")) bekomme ich folgende Fehlermeldung:
Code:
{"error":{"code":"BadRequest_NotFound","message":"Syntax error: character '\"' is not valid at position 0 in '\"Artikel\",\"100\"'."}}

Die Parameter hierfür waren aber geraten bzw. ein Test.

Kann mir jemand sagen, wie die URL aussehen muss?

Vielen Dank vorab!
Zuletzt geändert von maxje am 16. November 2020 13:28, insgesamt 1-mal geändert.

Re: Webdienst / Parameter

16. November 2020 12:32

hi,

verstehe ich dich richtig, dass du einen NAV-Webservice konsumieren willst?
Der WebService wird bestimmt vom NAV-Partner bereitgestellt - ich denke bei dem wirst du eventuell bessere Hilfe bekommen.

Hinweis: in der URL ist der Firmenname zu erkennen

Re: Webdienst / Parameter

16. November 2020 13:49

Ja, genau.
Mit unserem NAV-Partner habe ich mehrfach über die Thematik gesprochen, er kann mir leider nicht weiterhelfen. An der Stelle, meint er, ist er mit seinem Latein am Ende.

Vielen Dank für den Hinweis! Habe es gleich überarbeitet.

Re: Webdienst / Parameter

16. November 2020 14:26

maxje hat geschrieben:An der Stelle, meint er, ist er mit seinem Latein am Ende.

:evil: ...ok -> das ist für mich jetzt im Trüben fischen

nutzt du Postman, um den Webservice aufzurufen? Falls nicht, versuch es mal damit - da bekommst du im Normalfall mehr Meldungen raus.

ist der WebService für die Page wirklich veröffentlicht? -> ich meine
No HTTP resource was found that matches the request URI

sollte nicht kommen

probier doch auch mal, den Code im OnOpenPage-Trigger auszukommentieren - wenn die Page im Odata dann aufgeht, liegt es daran

weiterhin hab ich hier mal noch was gefunden - ob es dir weiterhilft...keine Ahnung
https://docs.microsoft.com/en-us/dynamics-nav/walkthrough-creating-and-interacting-odata-v4-bound-action

Re: Webdienst / Parameter

16. November 2020 15:59

Ich nutze unter anderm Postman, hier kann ich aber aus den Headern nichts weltenbewegendes herauslesen.

Zur Info:
Ich musste eine Art "Man-in-the-middle" (windows server 2016) basteln, weil die Authentifizierung über die Windows-Domäne läuft und die Abfragen von einem Ubuntu 18.04 kommen.
Aus irgendeinem Grund konnte sich die Linux-Maschine aber nicht am NAV-Server authentifizieren.
Ist eine winzige Python-Flask Anwendung, welche die Angefragte URL nimmt und anschließend mit der Authentifizierung an den NAV-Server weiterleitet.

Wenn ich im NAV in die Webdienste gehe, sind alle Häckchen gesetzt. Beispielsweise "Veröffentlicht".

Nach Korrenspondenz mit unserem Partner haben wir durch Primär und Sekundärschlüssel die Tabellen miteinandere verknüpft um die Abfrage erstmal zu umgehen, eine langfristige Lösung ist das aber nicht.
Deinen Link hatte ich vor meinem Post schon mehrfach durchgelesen, so sind auch die anfangs erwähnten Abfragen mit Parametern zustande gekommen ("Artikel", "100").
Ist allerdings ein Ratenspiel weil für mich nicht erkennbar ist, welche Parameter der Webdienst von mir verlangt.

Re: Webdienst / Parameter

16. November 2020 18:58

maxje hat geschrieben:Ist allerdings ein Ratenspiel weil für mich nicht erkennbar ist, welche Parameter der Webdienst von mir verlangt.

ja genau das muss dir der "Betreiber" des Webservice aber sagen.
Da es sich anscheinend um eine individuelle Page handelt, deren Inhalt wir dir nicht sagen können, da wir die zugrundeliegende Tabelle nicht kennen, ist es für uns Außenstehende recht schwierig, eine adäquate Aussage zu treffen.
Wenn in NAV der Webservice veröffentlicht ist, dann sollte der sich auch entsprechend der URL (die ebenfalls in NAV steht) aufrufen lassen.
Sollte das schon nicht funktionieren, stimmt etwas mit der Page nicht (vorallem wenn sich andere WebServices aus NAV aufrufen lassen).
Weiterhin ist es möglich, die Authentifzierung über einen 2. Dienst (NST) per NavUserPassword o.ä. zu setzen, dann musst du da nicht grob rumbasteln - das wäre für dein Szenario ggf. besser geeignet - aber wir kennen die Grundanforderung und Struktur nicht -> diese sollte wenn möglich mit eurem betreuenden Partner abgestimmt werden - dann kommt man sicherlich zu einem entspr. guten Lösungsansatz