最近のアクセス:
Location データタイプを拡張するための GxSoapHandlers メカニズム
Soap サービスは、 [ Use Native Soap ] プロパティが True に設定されている環境で使用されます。このメカニズムでは location データタイプと同様の処理を行えますが、このタイプのデータを言語の詳細と一緒にロードせずに、その機能を拡張できます。

.NET 

SOAP サービスの要求でデータを変更または追加できます。たとえば、資格情報や証明書を追加したり、URL を変更したりできます。
この実装を有効にするには、web.config を編集し、次の行を追加します。 
    <add  key="NativeChannelConfigurator" value="GxSoapHandler"/>
また、location データタイプに [ Configuration ] (非標準) プロパティを設定し、追加または変更が必要なパラメーターを、文字列、SDT、またはオブジェクトで送信します。
プログラムは次のようになります: 
    &location = GetLocation("WS_eFactura")
    &location.Configuration= "xxxxxxx"

    //DGI のテストとしてクエリをロード
    &pWS_eFacturaData.xmlData.FromString("")
    &pWS_eFacturaDataResult = &WS_eFactura.EFACRECEPCIONSOBRE(&pWS_eFacturaData)
    &longvar = &pWS_eFacturaDataResult.ToXml()
最後に、サービス呼び出しの前に呼び出されるアセンブリ (ネイティブ .NET オブジェクト) を作成します。GeneXus プログラムによって送信されたパラメーターはここで上書きされます。
このコードの例は、https://github.com/genexuslabs/GxSoapHandlerNet で参照できます。
例として、URL のみを上書きする場合は、次のようなプログラムになります:
using System;
using System.ServiceModel;
using GeneXus.Programs;
using GeneXus.Utils;
using System.ServiceModel.Description;

public class GxSoapHandler
{
    public void Setup( string eoName, GxLocation loc, object serviceClient)
    {
        if (eoName == "WS_eFactura" && loc.Configuration=="xxxxxxx") 
        {
            ClientBase<ISdtService1> svc = serviceClient as ClientBase<ISdtService1>;
            svc.Endpoint.Address = new System.ServiceModel.EndpointAddress("https://efactura.dgi.gub.uy:443/efactura/ws_efactura");  //サービスの URI を変更 
        }
    }
}
 

JAVA

データを SOAP 要求に追加できます。たとえば、認証用の SAML トークンを送信できます。
これは外部の jar で実装されます。クラスパスに com.genexus.util.GXSoapHandler というクラスが含まれる場合は、サービス呼び出しの前にそのクラスの setHandlers と呼ばれる静的メソッドが呼び出されます。
 
このメソッドには次のパラメーターがあります:
public static void setHandlers(Integer remoteHandle, com.genexus.ModelContext context, String serviceName, javax.xml.ws.BindingProvider bProvider)
サンプルプロジェクトのダウンロード: https://github.com/genexuslabs/GxSoapHandlerJava

 


サブページ
Created: 18/10/29 01:08 by Admin Last update: 19/03/26 22:15 by Admin
カテゴリ
Powered by GXwiki 3.0