运行 axis2 客户端版本 1.5

2023-12-24

因此,我已经没有办法尝试真正让客户端连接到我通过 axis2 运行的 SOAP 服务。

我尝试了两种方法,一种是使用 wsdl2java 构建存根和关联的客户端类,然后编写一个客户端类来构建请求消息并通过存根发送它们。另一种方法是使用 ServiceClient 进行连接。

两人都以自己的方式失败了。

选项#1,每次通过存根发送消息时,我都会得到以下信息:

org.apache.axis2.AxisFault: The input stream for an incoming message is null.
at org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:87)
at org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:67)
at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:354)
at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:417)
at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)

选项#2,每次运行它时都会出现此异常:

org.apache.axis2.deployment.DeploymentException: org.apache.axis2.transport.local.LocalTransportSender

选项 #2 来源:

import javax.xml.stream.XMLStreamException;
import org.apache.axiom.om.OMAbstractFactory; 
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.Constants;
import org.apache.axis2.client.ServiceClient;

public class loyaltyClient {

    private static EndpointReference targetEPR = 
         new EndpointReference(
           "http://localhost:8080/axis2/services/service");

    public static OMElement verifyCustomer(String customer_id) {
        OMFactory fac = OMAbstractFactory.getOMFactory();
        OMNamespace omNs = fac.createOMNamespace(
                "http://localhost/", "service");
        OMElement method = fac.createOMElement("VerifyCustomer", omNs);
        OMElement value1 = fac.createOMElement("customer_id",omNs);
        OMElement value2 = fac.createOMElement("source_id",omNs);
        OMElement value3 = fac.createOMElement("source_password",omNs);
        OMElement value4 = fac.createOMElement("source_txnid",omNs);
        OMElement value5 = fac.createOMElement("timestamp",omNs);

value1.addChild(fac.createOMText(value1, customer_id));
value2.addChild(fac.createOMText(value2, "source"));
value3.addChild(fac.createOMText(value3, "1234"));
value4.addChild(fac.createOMText(value4, "123"));
value5.addChild(fac.createOMText(value5, "06-01-2010 12:01:01"));
        method.addChild(value1);
        method.addChild(value2);
        method.addChild(value3);
        method.addChild(value4);
        method.addChild(value5);
        return method;
    }

    public static void main(String[] args) {
        try {
            OMElement vctest = loyaltyClient.verifyCustomer("6177740603");
            Options options = new Options();
            options.setTo(targetEPR);

options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

            ServiceClient sender = new ServiceClient();
            sender.setOptions(options);
            OMElement result = sender.sendReceive(vctest);

            String response = result.getFirstElement().getText();
            System.out.println(response);

        } catch (Exception e) { //(XMLStreamException e) {
            System.out.println(e.toString());
        }
    }

}


在使用 Axis 连接到 .Net 服务提供商时,我还遇到了错误“传入消息的输入流为空”。

问题是 .Net 不支持名为“分块编码”的功能,默认情况下 Axis 会以块的形式破坏其请求标头,这被认为是符合 HTTP 1.1 的东西。

无论如何,您可以通过执行以下操作在 Axis 中关闭此功能:

// Turn off the Axsis Chunked feature, some service providers (like .Net) don't support chunked headers.
Options options = serviceClient.getOptions();
options.setProperty(HTTPConstants.CHUNKED, Constants.VALUE_FALSE);
serviceClient.setOptions(options);            

这对我有用。处理 .Net 服务时要确保的另一件事是能够指定端口名称并确保您的消息负载具有每个元素的命名空间前缀。

希望这个信息对某人有帮助。

干杯, 直流

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

运行 axis2 客户端版本 1.5 的相关文章

随机推荐

  • Javascript通知解决方案库:桌面、声音、弹出、标题栏闪烁等

    是否有任何 Javascript 库支持在长时间运行的操作 例如上传 结束时发出通知 通知最好是通用的 这样即使某些技术不起作用 例如桌面通知 浏览器仍然能够引起注意 声音铃声 桌面通知 Chrome Stackoverflow com 风
  • 在Python中解析JSON时出现各种错误

    尝试从需要登录的 url 解析 json 在这里包括我的所有代码 因为我不确定错误在哪里 try import simplejson as json except ImportError import json import urllib2
  • 使用 .after() 添加 html 关闭和打开标签

    我试图通过找到列表的中间点并添加将无序列表分成两列 ul 在那之后 这可能是完全错误的方法 但这是我的想法 我的js看起来像这样 container ul each function var total this children leng
  • 有没有办法在 Racket 中查看 lambda 的主体?

    假设我有这段代码 lang racket define a x x y y z w w z 我凭直觉知道这个 lambda 表达式 扩展地 等于 z z 我的问题是是否有办法打印出正文a如果我想看看 Racket 在内部简化了多少功能 更多
  • 如何从数组元素中删除字符?

    我有一个像这样的数组 ee 3 4 22 22 我想删除逗号 或将其替换为 34使数组看起来像这样 ee 3 4 22 22 or this ee 3 4 34 22 34 22 34 原因是我试图将该数组从 Ruby 传递到 JavaSc
  • Asp Core 发布时错误的程序集重定向

    使用 Visual Studio 发布我的 ASP Core 项目时 config文件与我的可执行文件一起创建 The config包括几个bindingRedirect像这样
  • NIO SocketChannel 读取超时? [复制]

    这个问题在这里已经有答案了 如果连接建立后一段时间内没有收到数据 设置超时关闭 NIO SocketChannel 的最佳方法是什么 Either 您正在使用一个Selector 在这种情况下 您可以选择一个可以使用的超时 如果超时 sel
  • 如何手动创建 Apache Windows 服务

    我在尝试安装另一个 Apache Web 服务器时不小心删除了 Apache Windows 服务 有谁知道如何从 cmd 创建另一个 Apache Windows 服务 我尝试了 sc create 但最后缺少一个脚本 例如 k star
  • @PreAuthorize 和 hasPermission() 执行代码两次

    我想使用 PreAuthorize Spring 注释来控制应用程序中的访问 问题是 我有很多条件不取决于请求参数 而是取决于数据库实体 概述 我有一个Route实体 具有User owner场地 您可以删除Route仅当您是所有者时 我已
  • 为什么 tanh 在我的机器上比 exp 快?

    这个问题源于一个单独的问题 https stackoverflow com questions 43033593 why is using tanh definition of logistic sigmoid faster than sc
  • 如何从 R 中的帮助页面获取文本数据?

    在全球范围内 我有兴趣从 R 文档中获取所有文本数据 将它们放入数据框架中并应用文本挖掘技术 包级别 假设我对一个包感兴趣 例如 utils 并且我想获取向量中的所有文本数据 这有效 package d lt packageDescript
  • Omnipay PayPal Express 是否有信用卡功能?还是只能在 PayPal Pro 中使用?

    这个问题可能类似于THIS https stackoverflow com questions 28218397 using paypal pro in omnipay and THIS https stackoverflow com qu
  • 如何使用 nltk 从字符串中提取名称

    我正在尝试从非结构化字符串中提取名称 印度 这是我的代码 text Balaji Chandrasekaran Bangalore Senior Business Analyst Lead Business Analyst An accom
  • Stub_chain 与 should_receive 一起

    我正在尝试测试方法调用链中的方法之一是否获得特定参数 在下面的代码中 例如 MyModel 必须接收该方法的参数 0offset 不幸的是 下面的代码不起作用 似乎不可能混合should receive和stub chain 我该如何解决这
  • 32 位系统上 4GB 限制背后的数学原理

    我有一个与 32 位内存地址相关的非常基本的问题 我的理解是2 32是32位系统上可能的内存地址的最大数量 我感到困惑的是我们如何从这个数字达到所谓的 4GB 限制 在我的研究中我看到有些人 http www zdnet com blog
  • 有没有办法用 git diff 显示*仅*空白差异?

    我想在自己的提交中提交所有空白更正 以保持其他所有内容不受空白更改的影响 很容易过滤out空白差异与git diff使用这样的东西 git diff ignore all space ignore space change ignore s
  • 使用 Maven 隐藏清单条目

    当使用maven构建jar文件时 它会在META INF MANIFEST MF中创建一个清单文件 目前其内容为 Manifest Version 1 0 Archiver Version Plexus Archiver Built By
  • 在编译时防止标头包含在某些文件中?

    我有一个头文件 我可以控制它的内容 另外 我有一个接口 I1 在其他一些文件中定义 其中各种 派生的实现 我想禁止这些实现包括这个 头文件 因此 在编译时 如果包含该文件 编译将会失败 否则它将照常继续 所以我有头文件和接口定义 在其他文件
  • StorageMetadata'没有成员'downloadURL'[重复]

    这个问题在这里已经有答案了 我使用下面的代码 但是当我更新代码和 pod 时出现以下错误 StorageMetadata 没有成员 downloadURL static func uploadVideoToFirebaseStorage v
  • 运行 axis2 客户端版本 1.5

    因此 我已经没有办法尝试真正让客户端连接到我通过 axis2 运行的 SOAP 服务 我尝试了两种方法 一种是使用 wsdl2java 构建存根和关联的客户端类 然后编写一个客户端类来构建请求消息并通过存根发送它们 另一种方法是使用 Ser