使用PHP文档处理NodeJS中的SOAP请求

使用PHP文档处理NodeJS中的SOAP请求,php,node.js,soap,Php,Node.js,Soap,我正在努力将处理SOAP请求的PHP代码转换为NodeJ。 我尝试了很多东西,包括npm: 我真的不明白如何将我在PHP中的代码行放入NodeJS代码中。这是: $stream_context = stream_context_create([ 'ssl' => [ 'verify_peer' => false, 'verify_peer_name' => false ], 'http' => [

我正在努力将处理SOAP请求的PHP代码转换为NodeJ。 我尝试了很多东西,包括npm:

我真的不明白如何将我在PHP中的代码行放入NodeJS代码中。这是:

$stream_context = stream_context_create([
    'ssl' => [
        'verify_peer' => false,
        'verify_peer_name' => false
    ],
     'http' => [
         'header' => 'MailToken: ' . $token
     ]
]);

$client = new SoapClient(null, [
    'stream_context' => $stream_context,
    'location' => self::MAIL_URL,
    'uri' => 'SOAPService/Mail'
]);

return $client->__soapCall('send', [
    'subject' => $subject,
    'body' => $body,
    'recipients' => $recipients
], null);
谁能给我一个建议吗?
非常感谢。

这里有一个关于SOAP一般工作原理的很好的解释:

因此,我们从中学到:

  • 例如,您可以使用node.js中的XMLHttpRequest来创建请求本身

  • 现在我们可以使用XMLHttpRequest对象进行调用

  • 下面是XMLHttpRequest的基本用法。基于此,您的请求应该是这样的:

    var xhr=new XMLHttpRequest(); xhr.open(“POST”,soap_服务器,true)

    //随请求一起发送正确的标头信息 setRequestHeader(“内容类型”,“应用程序/soap+xml;字符集=utf-8”); setRequestHeader(“MailToken”,mail_token)

    xhr.onreadystatechange=function(){//在状态更改时调用函数。 if(this.readyState==XMLHttpRequest.DONE&&this.status==200){ //请求已完成。请在此处进行处理。 } } xhr.发送(soap_信封)

  • soap\u server=这将是self::MAIL\u URL+SOAPService/MAIL

  • mail_token=这将是邮件令牌

  • soap_envelope=这应该是一个正确构造的XML,对应于soap需求(读取第一个url)。您可以在其中转储一个字符串,也可以像这样使用库:生成正确的XMLSOAP请求


  • 我无法直接帮助您,但是当您将
    null
    作为
    SoapClient
    的构造函数的第一个参数传递时,这意味着您不再处于WSDL模式。WSDL和SOAP是齐头并进的,如果您不使用它,您几乎只是在用XML文档做一个简单的HTTP POST。也就是说,如果您只使用了一点点SOAP,我建议您研究一下XML负载的样子,然后切换到简单的HTTP。另外,如果您的代码很简单,也许可以看看您的服务是否也有REST端点?谢谢您的回复。实际上,我无法获得有关SOAP服务器的任何信息:我没有编写代码,没有人能够获得代码(没有注释…)。我只有一个rest URL,但负责人告诉我必须用SOAP封装我的请求。我没有任何WSDL,只有这段正在运行的PHP代码。这就是为什么我唯一的希望是在Stackoverflow上找到一个聪明的头脑。不要使用Node.jsp。这是我在提问之前所做的。相信我,我已经处理了很多复杂的项目,我在这里所要求的只是善意的建议,我不觉得“RTFM”很有建设性。SOAP显然不是我掌握的东西,因此如果高级用户能帮助我,那就太好了。我知道,如果我花几个月的时间掌握SOAP,我会自己找到答案,但我不想把时间花在我将来不会使用的东西上。我需要知道路径的人提供一条捷径。如果我们能够访问文档和测试端点,我们可以提供更多帮助。(我知道你也处在困难和困难之间)。我要重申我一开始说的话。运行PHP版本,转储和,只需进行一个简单的HTTP POST调用。如果没有WSDL,这是不值得奋斗的。你对SOAP了解得越多,你就越喜欢它能正常工作,当你不得不调试最小的东西时,你就会尖叫。“SOAP_server=那将是self::MAIL_URL+SOAPService/MAIL”不,PHP代码中的
    uri
    选项是一个XML名称空间(如前所述:“uri是SOAP服务的目标名称空间”)。在您发布的w3schools页面上,uri将是
    https://www.w3schools.com/prices
    。其实不是,uri只是一个通用术语。我假设您仍然可以使用第一个url中的通用名称空间。从最初的描述来看,服务器和uri是http请求的典型组件,其中需要服务器地址和后续资源路径。