JMeter启动webservice调用报错

[color=blue]2012/11/18 20:44:05 ERROR - jmeter.gui.action.RemoteStart: Failed to initialise remote engine java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested exception is:
java.net.ConnectException: Connection refused: connect
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:619)
at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:216)
at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:202)
at sun.rmi.server.UnicastRef.newCall(UnicastRef.java:340)
at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
at java.rmi.Naming.lookup(Naming.java:101)
at org.apache.jmeter.engine.ClientJMeterEngine.getEngine(ClientJMeterEngine.java:54)
at org.apache.jmeter.engine.ClientJMeterEngine.<init>(ClientJMeterEngine.java:67)
at org.apache.jmeter.gui.action.RemoteStart.doRemoteInit(RemoteStart.java:176)
at org.apache.jmeter.gui.action.RemoteStart.doAction(RemoteStart.java:87)
at org.apache.jmeter.gui.action.ActionRouter.performAction(ActionRouter.java:79)
at org.apache.jmeter.gui.action.ActionRouter.access$000(ActionRouter.java:40)
at org.apache.jmeter.gui.action.ActionRouter$1.run(ActionRouter.java:61)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:701)
at java.awt.EventQueue.access$000(EventQueue.java:102)
at java.awt.EventQueue$3.run(EventQueue.java:662)
at java.awt.EventQueue$3.run(EventQueue.java:660)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:671)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:69)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:157)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391)
at java.net.Socket.connect(Socket.java:579)
at java.net.Socket.connect(Socket.java:528)
at java.net.Socket.<init>(Socket.java:425)
at java.net.Socket.<init>(Socket.java:208)
at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:40)
at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:146)
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:613)
... 26 more
[color=blue][/color][/color]
### 使用 JMeter 调用 WebService 接口 #### 准备阶段 在使用 JMeter 进行 WebService 接口测试之前,需确认所使用的 JMeter 版本。如果版本低于 3.2,则可以直接利用内置的 `SOAP/XML-RPC Request` 插件完成测试;但如果版本高于等于 3.2,则需要借助第三方插件或其他方法实现测试需求[^3]。 #### 配置 SOAP 请求 对于基于 SOAP 的 WebService 接口,可以通过以下方式配置: 1. **创建线程组** 打开 JMeter 后,在测试计划下右键选择“添加 -> 线程(用户) -> 线程组”,设置必要的线程数、循环次数等参数。 2. **添加 HTTP 请求默认值** 右键点击线程组,“添加 -> Config Element -> HTTP 请求默认值”。在此处填写目标服务器的基础 URL 和其他通用属性(如端口号),以便简化后续请求配置。 3. **构建 SOAP 请求** 如果使用的是低版本 JMeter (<3.2),可以在测试计划中添加 `SOAP/XML-RPC Request` 元素并输入具体的 WSDL 地址以及 SOAP 消息体内容。然而,针对更高版本 (>=3.2),推荐采用如下替代方案之一: - 利用普通的 `HTTP 请求` 来发送自定义 XML 数据包作为 POST 方法的有效载荷; - 或者安装额外支持 WS-* 协议栈特性的插件库扩展原有功能集。 4. **编写完整的 SOAP Envelope** 根据实际业务逻辑填充相应的字段值至标准模板结构之中。例如给定样例中的城市编码查询部分可参照如下形式书写: ```xml <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:web="http://WebXml.com.cn/"> <soap:Header/> <soap:Body> <web:getSupportCityString> <!--Optional:--> <web:theRegionCode>?</web:theRegionCode> </web:getSupportCityString> </soap:Body> </soap:Envelope> ``` 注意替换问号位置为你想要检索的具体区域代号字符串[^5]。 5. **指定 Content-Type 头部信息** 确保每条发出的消息都携带恰当的内容类型声明——即 application/soap+xml;charset=UTF-8 ,这有助于接收方正确解析传入的数据流格式。 6. **验证响应结果** 添加断言组件评估返回数据是否满足预期条件。比如检查状态码是不是成功标志位2xx系列数值;亦或是运用XPath Extractor 提取特定节点内的文本片段并与预设参考答案对比一致性程度等等。 --- ### 示例代码展示 以下是通过普通 HTTP Sampler 实现的一个完整例子演示如何向远程 web service 发起调用过程: ```java // 定义变量存储 wsdl url 和 soap body content String wsdlUrl = "http://example.com/service?wsdl"; String soapRequestData = "<?xml version=\"1.0\" encoding=\"utf-8\"?>"+ "<soapenv:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"" + " xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"" + " xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\">" + " <soapenv:Header/>" + " <soapenv:Body>" + " <ns1:GetWeatherForecast soapenv:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\">" + " <city xsi:type=\"xsd:string\">Beijing</city>" + " </ns1:GetWeatherForecast>" + " </soapenv:Body>" + "</soapenv:Envelope>"; // 设置 sampler 属性 sampler.setPostBodyRaw(true); sampler.addNonEncodedArgument("", soapRequestData, ""); sampler.setProperty(TestElement.TEST_CLASS, HttpTestSampleGui.class.getName()); sampler.setProperty(TestElement.GUI_CLASS, TestBeanGUI.class.getName()); // 设定 header manager 中包含必要头项 headers.put("Content-Type", "application/soap+xml;charset=UTF-8"); headers.put("SOAPAction", "\"urn:ExampleNamespace#GetWeatherForecast\""); ``` 上述脚本展示了怎样构造一个简单的天气预报获取请求,并设置了两个关键头部参数:一个是表明消息主体遵循何种协议规范的标准 MIME 类型描述符;另一个则是指示具体操作名称的空间限定标识符组合而成的动作标签串表示法。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值