java - 如何从 Python 连接到 JDA 服务器

标签 java python

我有一个包含连接详细信息的 JDA 服务器。我必须从我的 python 程序连接到此 JDA 服务器并执行 MOCA 命令。我已经搜索过,但到目前为止还没有找到任何相关文档。

找到了一些 jar 文件,但没有使用 python。我的 python 客户端应用程序必须连接到 JDA 并执行命令。

执行请求并获取 session key 值。还使用 session key 执行了命令,但输出没有得到反射(reflect)。

调用此特定命令以使用请求正文登录。

<moca-request autocommit="True">
  <environment>
    <var name="USR_ID" value="super"/>
  </environment>
  <query>login user where usr_id = 'super' and usr_pswd = 'super'</query>
</moca-request>

我能够成功登录并得到响应

<?xml version="1.0" encoding="UTF-8"?>
<moca-response>
    <session-id></session-id>
    <status>0</status>
    <moca-results>
        <metadata>
            <column name="usr_id" type="S" length="0" nullable="true"/>
            <column name="locale_id" type="S" length="0" nullable="true"/>
            <column name="addon_id" type="S" length="0" nullable="true"/>
            <column name="cust_lvl" type="I" length="0" nullable="true"/>
            <column name="session_key" type="S" length="0" nullable="true"/>
            <column name="pswd_expir" type="I" length="0" nullable="true"/>
            <column name="pswd_expir_dte" type="D" length="0" nullable="true"/>
            <column name="pswd_disable" type="I" length="0" nullable="true"/>
            <column name="pswd_chg_flg" type="O" length="0" nullable="true"/>
            <column name="pswd_expir_flg" type="O" length="0" nullable="true"/>
            <column name="pswd_warn_flg" type="O" length="0" nullable="true"/>
            <column name="srv_typ" type="S" length="0" nullable="true"/>
            <column name="super_usr_flg" type="O" length="0" nullable="true"/>
            <column name="ext_ath_flg" type="O" length="0" nullable="true"/>
        </metadata>
        <data>
            <row>
                <field>SUPER</field>
                <field>US_ENGLISH</field>
                <field>3pl,WM,SEAMLES,3pl</field>
                <field>10</field>
                <field>;uid=SUPER|sid=b6698786-85dc-41ec-9e54-c0d8f99b5cbf|dt=jttyorn7|sec=ALL;Hz1biv4HuD_Uq3g.R9QtCfwjQ0</field>
                <field null="true"></field>
                <field null="true"></field>
                <field>6008</field>
                <field>0</field>
                <field>0</field>
                <field>0</field>
                <field>DEVELOPMENT</field>
                <field>1</field>
                <field>0</field>
            </row>
        </data>
    </moca-results>
</moca-response>

我已根据 xml 响应将 session key 设为;uid=SUPER|sid=b6698786-85dc-41ec-9e54-c0d8f99b5cbf|dt=jttyorn7|sec=ALL;Hz1biv4HuD_Uq3g.R9QtCfwjQ0并尝试执行命令。

这就是我执行命令的方式

<moca-request autocommit="True">
  <environment>
    <var name="USR_ID" value="super"/>
    <var name="SESSION_KEY" value=";uid=SUPER|sid=b6698786-85dc-41ec-9e54-c0d8f99b5cbf|dt=jttyorn7|sec=ALL;Hz1biv4HuD_Uq3g.R9QtCfwjQ0"/>
    <var name="LOCALE_ID" value="US_ENGLISH"/>
    <var name="MOCA_APPL_ID" value="MYAPP"/>
  </environment>
 <query>
     create record where table = 'alt_prtmst' and prtnum = 'TEST1' and alt_prtnum = 'TEST123' and alt_prt_typ = 'SAP' and prt_client_id = '----' </query>
</moca-request>

命令执行时没有任何错误,我也得到了响应。

<?xml version="1.0" encoding="UTF-8"?>
<moca-response>
    <session-id></session-id>
    <status>0</status>
</moca-response>

但是更改没有得到反射(reflect)。

我还在查询中尝试了另一个 moca 命令..

<query>
    list warehouses
</query>

即使它执行如何获取准确的输出

最佳答案

我已将您的问题解释为您正在尝试连接到 JDA (WMS) 实例。 我在 NodeJs 中创建了一个应用程序,它连接到一个实例并执行 MOCA 命令。

我正在发布带有请求 header 'Content-Type': 'application/moca-xml' 的 XML至<host>:<port>/service 。下面的示例 XML 正文将运行 list user tables MOCA 命令。

<moca-request autocommit="True">
  <environment>
    <var name="USR_ID" value="..."/>
    <var name="SESSION_KEY" value="..."/>
    <var name="LOCALE_ID" value="EN-GB"/>
    <var name="MOCA_APPL_ID" value="MYAPP"/>
  </environment>
  <query>list user tables</query>
</moca-request>

SESSION_KEY可以从登录请求的响应中获取,XML 正文如下。

<moca-request autocommit="True">
  <environment>
    <var name="USR_ID" value="..."/>
  </environment>
  <query>login user where usr_id = '...' and usr_pswd = '...'</query>
</moca-request>

关于java - 如何从 Python 连接到 JDA 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54937885/

相关文章:

java - 如何将网站首页重定向到/public/index.html路径

Java二分查找树方法需要返回值而不是打印

python - 如何使用来自多列的参数调用 pandas.rolling.apply?

python将函数传递给类

python - Pandas DataFrame 似乎没有 "factorize"方法

java - 有什么办法可以让下面的Java代码执行得更快吗?

java - 如何将scala.collection.Map<Object, Object>转换为Java的Map<Integer, Integer>?

python - 容器与 python 请求通信

java - 如何为 Java Spring REST API 实现 AngularJS JWT 身份验证

Pythonlogging setLevel 整数输入是什么意思?