Nodejs调用java webservice

Nodejs调用java webservice

求个案例nodejs调用java webservice,但是不要是用var soap = require(‘soap’) 的案例。求各位能人义士解答下。。。小生感激不尽。

5 回复

当然可以!如果您想在Node.js中调用Java WebService,并且不使用soap模块,您可以考虑使用axios或者node-fetch来发送HTTP请求。下面是一个使用axios的示例。

示例代码

首先,确保您已经安装了axios模块。如果还没有安装,可以通过以下命令进行安装:

npm install axios

接下来,您可以编写一个简单的Node.js脚本来调用Java WebService。假设我们有一个WSDL URL,并且需要调用其中的一个方法。

const axios = require('axios');

// 定义WebService的URL
const wsdlUrl = 'http://example.com/service?wsdl';

// 定义调用的方法名和参数
const methodName = 'yourMethodName';
const params = {
    param1: 'value1',
    param2: 'value2'
};

// 构造SOAP请求体
const soapRequest = `
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/">
   <soapenv:Header/>
   <soapenv:Body>
      <tem:${methodName}>
         <!-- Optional -->
         <tem:param1>${params.param1}</tem:param1>
         <tem:param2>${params.param2}</tem:param2>
      </tem:${methodName}>
   </soapenv:Body>
</soapenv:Envelope>
`;

// 设置请求头
const headers = {
    'Content-Type': 'text/xml; charset=utf-8',
    'SOAPAction': `http://tempuri.org/${methodName}`
};

// 发送POST请求
axios.post(wsdlUrl, soapRequest, { headers })
    .then(response => {
        console.log('Response:', response.data);
    })
    .catch(error => {
        console.error('Error:', error.message);
    });

解释

  1. 安装axios:首先安装axios模块。
  2. 定义WebService的URL:这里我们假设WebService的URL为http://example.com/service?wsdl
  3. 构造SOAP请求体:根据WSDL定义的方法名和参数构造SOAP请求体。
  4. 设置请求头:设置必要的SOAP请求头,包括Content-TypeSOAPAction
  5. 发送POST请求:使用axios.post方法发送SOAP请求到WebService。

这样,您就可以通过Node.js直接发送SOAP请求来调用Java WebService,而不需要依赖于soap模块。希望这能帮助到您!


协议的解析会蛋疼死的。详细描述一下场景吧

捡肥皂多危险的事情, 还是裸露协议比较直观

谢谢各位

要使用Node.js调用Java WebService,可以考虑使用axios或者node-fetch这样的HTTP客户端库来发送HTTP请求。以下是一个示例代码,展示了如何使用axios来调用一个基于SOAP协议的Web Service。

示例代码

首先,安装所需的库:

npm install axios

然后编写调用Java WebService的代码:

const axios = require('axios');

// Java WebService的URL
const wsdlUrl = 'http://example.com/service?wsdl';

// SOAP 请求需要的参数
const soapRequest = `
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <YourOperationName xmlns="http://yournamespace.com">
      <!-- 在这里添加您的参数 -->
      <param1>value1</param1>
      <param2>value2</param2>
    </YourOperationName>
  </soap:Body>
</soap:Envelope>
`;

async function callWebService() {
  try {
    const response = await axios.post(
      wsdlUrl,
      soapRequest,
      {
        headers: {
          'Content-Type': 'text/xml; charset=utf-8',
          'SOAPAction': 'http://yournamespace.com/YourOperationName'
        }
      }
    );

    console.log(response.data);
  } catch (error) {
    console.error('Error calling the web service:', error.message);
  }
}

callWebService();

解释

  1. 安装依赖:使用axios作为HTTP客户端。
  2. 定义SOAP请求:构造一个包含所需操作和参数的SOAP XML请求体。
  3. 配置请求头:设置正确的Content-TypeSOAPAction,这两个字段对于Web服务来说非常重要。
  4. 发起请求:使用axios.post()方法向Web服务发送POST请求。
  5. 处理响应:捕获并打印Web服务返回的数据。

这种方法不需要使用第三方SOAP库,而是直接通过HTTP进行通信,灵活性更高。请确保替换示例中的wsdlUrlsoapRequest内容以及YourOperationName为实际使用的Web服务地址和操作名。

回到顶部