0

Acumatica Web サービスのセッションの確立 Web サービスを使用してセッションを確立し、そのセッションを使用して後続のアクションを実行する必要があります。たとえば、以前に作成したセッション/トークンを使用して、Web サービスを使用して SOOrder と Shipment を作成します。

SOOrder.Screen content = new SOOrder.Screen();
content.Url = InstanceUrl + “/Soap/SO301000.asmx";
content.CookieContainer = new System.Net.CookieContainer();
SOOrder.LoginResult lresult= content.Login(Username, password);

これを使用して、すでに lresult.Session でセッションを取得しています。

ここで、ログインを再度呼び出さずに、以下の出荷コンテンツでこのセッションを使用したいと思います。

SOShipment.Screen shipmentcontent = new SOShipment.Screen();
shipmentcontent.Url = InstanceUrl + "(W(3))/Soap/SO302000.asmx";
shipmentcontent.CookieContainer = new System.Net.CookieContainer();
shipmentcontent.Login(Username, password);
4

2 に答える 2

0

Acumatia のさまざまなアクション間でログイン接続を維持したいというあなたの理解が正しければ。これを達成するために、次のアプローチを使用しました。

  1. グラフを作成:

    public class Importer : PXGraph { }

  2. 次のコードで作成された内部グラフ:

    public string GetHostUrl() { var nextIndex = HttpContext.Current.Request.Url.ToString().IndexOf("/", 7, StringComparison.Ordinal) + 1; var urlStart = HttpContext.Current.Request.Url.ToString().IndexOf("/", nextIndex + 1, StringComparison.Ordinal); var url = HttpContext.Current.Request.Url.ToString().Substring(0, urlStart); 戻り URL; }

            public Screen Screen
            {
                get
                {
                    var context = new Screen
                    {
                        CookieContainer = new CookieContainer(),
                        AllowAutoRedirect = true,
                        EnableDecompression = true,
                        Timeout = 1000000
                    };
                    var nextIndex = HttpContext.Current.Request.Url.ToString().IndexOf("/", 7,        StringComparison.Ordinal) + 1;
                    var urlStart = HttpContext.Current.Request.Url.ToString().IndexOf("/", nextIndex + 1, StringComparison.Ordinal);
                    context.Url = HttpContext.Current.Request.Url.ToString().Substring(0, urlStart) + "/Soap/IMPORTET.asmx";
    
                    return context;
                }
            }
    

次に、異なる画面間で画面のコンテキストを共有します。

たとえば、次のようにします。

var scr = Screen;
var userName = PXAccess.GetUserName();
var password = GetUserPassword();
var context = Screen;
var lgRes = context.Login(userName, password);

しかし、異なるセッション間でユーザーパスワードを保持しました

于 2014-09-14T19:16:27.090 に答える