Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用转换为json的SOAP请求返回的值发送邮件_Php_Json - Fatal编程技术网

Php 使用转换为json的SOAP请求返回的值发送邮件

Php 使用转换为json的SOAP请求返回的值发送邮件,php,json,Php,Json,我有一个表单,通过PHP cURL作为SOAP提交给WSDL。它提交得很好,我的PHP处理程序接收返回的xml并将其转换为json字符串,如下所示: $soap_do = curl_init(); curl_setopt($soap_do, CURLOPT_URL, $url2 ); curl_setopt($soap_do, CURLOPT_HEADER, false); curl_setopt($soap_do, CURLOPT_CONNECTTIMEOUT, 100); curl_seto

我有一个表单,通过PHP cURL作为SOAP提交给WSDL。它提交得很好,我的PHP处理程序接收返回的xml并将其转换为json字符串,如下所示:

$soap_do = curl_init();
curl_setopt($soap_do, CURLOPT_URL, $url2 );
curl_setopt($soap_do, CURLOPT_HEADER, false);
curl_setopt($soap_do, CURLOPT_CONNECTTIMEOUT, 100);
curl_setopt($soap_do, CURLOPT_TIMEOUT,        100);
curl_setopt($soap_do, CURLOPT_RETURNTRANSFER, true );
curl_setopt($soap_do, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($soap_do, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($soap_do, CURLOPT_POST,           true );
curl_setopt($soap_do, CURLOPT_POSTFIELDS,     $xml_post_string);
curl_setopt($soap_do, CURLOPT_HTTPHEADER,     $headers);

$result = curl_exec($soap_do);
if ($result === false) {
    $err = 'Curl error: ' . curl_errno($soap_do);
    print $err;
} else {
    $xml = simplexml_load_string($result);
    $body = $xml->xpath("//soapenv:Body//demosetupReturn")[0];
    $output = [];
    foreach ( $body as $item)  {
        $output[(string)$item->key] = (string)$item->value;
    }
    echo json_encode($output);
}
curl_close($soap_do);
{"DemoUName":"FBar308r","DemoPass":"Demo5538r","FutAcct":"DEMO06341r","FxAcct":"","UUID":"ED31DA3C-D015-4B7F-AAB2-0B6ECBF17FEr","Result":"User has been added with ID = 57218r Account DEMO06341r2 has been moved from User Pool to User FBar308r "}
返回的数据(xml/SOAP)转换为json字符串,如下所示:

$soap_do = curl_init();
curl_setopt($soap_do, CURLOPT_URL, $url2 );
curl_setopt($soap_do, CURLOPT_HEADER, false);
curl_setopt($soap_do, CURLOPT_CONNECTTIMEOUT, 100);
curl_setopt($soap_do, CURLOPT_TIMEOUT,        100);
curl_setopt($soap_do, CURLOPT_RETURNTRANSFER, true );
curl_setopt($soap_do, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($soap_do, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($soap_do, CURLOPT_POST,           true );
curl_setopt($soap_do, CURLOPT_POSTFIELDS,     $xml_post_string);
curl_setopt($soap_do, CURLOPT_HTTPHEADER,     $headers);

$result = curl_exec($soap_do);
if ($result === false) {
    $err = 'Curl error: ' . curl_errno($soap_do);
    print $err;
} else {
    $xml = simplexml_load_string($result);
    $body = $xml->xpath("//soapenv:Body//demosetupReturn")[0];
    $output = [];
    foreach ( $body as $item)  {
        $output[(string)$item->key] = (string)$item->value;
    }
    echo json_encode($output);
}
curl_close($soap_do);
{"DemoUName":"FBar308r","DemoPass":"Demo5538r","FutAcct":"DEMO06341r","FxAcct":"","UUID":"ED31DA3C-D015-4B7F-AAB2-0B6ECBF17FEr","Result":"User has been added with ID = 57218r Account DEMO06341r2 has been moved from User Pool to User FBar308r "}

我需要访问$output,并从中提取一些值,比如“DemoUName”、“DemoPass”等,然后将其填充到php sendmail函数中。如何以PHP$var的形式访问json数据项并发送邮件?

在将$output转换为json之前访问它

$message = "Here are elements from the soap message captured:\n";
$message .= $output['DemoUName'] . "\n";
$message .= $output['DemoPass'] . "\n";
$to = 'email@example.com';
$subject = 'soap capture';
mail($to, $subject, $message);
echo json_encode($output);

在将$output转换为json之前访问它

$message = "Here are elements from the soap message captured:\n";
$message .= $output['DemoUName'] . "\n";
$message .= $output['DemoPass'] . "\n";
$to = 'email@example.com';
$subject = 'soap capture';
mail($to, $subject, $message);
echo json_encode($output);

数据作为具有name:value属性的对象从curl请求返回。如果你想呼出“DemoUName”,你会使用

echo $var->DemoUName;
这就是访问对象属性的方式

对于邮递员,我会在编码之前发送它。一般来说,您可以在php中访问以下内容:

mail($to,$subject,$message,$headers); 
如何构建消息完全取决于您自己,但您可以将curl对象中的变量附加到$message变量中。简单的方法是使用以下内容


$message.=$var->DemoUName.,”$变量->其他属性。“,”$var->otherProperty.'.

从curl请求返回的数据是一个具有name:value属性的对象。如果你想呼出“DemoUName”,你会使用

echo $var->DemoUName;
这就是访问对象属性的方式

对于邮递员,我会在编码之前发送它。一般来说,您可以在php中访问以下内容:

mail($to,$subject,$message,$headers); 
如何构建消息完全取决于您自己,但您可以将curl对象中的变量附加到$message变量中。简单的方法是使用以下内容


$message.=$var->DemoUName.,”$变量->其他属性。“,”$var->otherProperty.'.

不要对它进行编码?立即使用
json\u decode()
对其进行解码?不进行编码吗?立即使用
json_decode()
对其进行解码?只需在“echo json_encode($output);”行之前输入上述内容?没有问题,我只是使用json在$.ajax requestIndead中触发js工作流,在
echo json\u encode($output)
之上是合适的。当然,您还必须为$to和$subject定义一个值。这非常有效,我遇到的唯一问题是在有人填写表单时访问提交的$Email值,因为它不包含在返回的数据中。我需要抄送$Email POST值在“echo json_encode($output);”行之前输入上面的内容?没有问题,我只是使用json在$.ajax requestIndead中触发js工作流,在
echo json\u encode($output)
之上是合适的。当然,您还必须为$to和$subject定义一个值。这非常有效,我遇到的唯一问题是在有人填写表单时访问提交的$Email值,因为它不包含在返回的数据中。我需要抄送$Email POST value,看起来不错。在PHP中发送邮件没有问题。在执行“echo json_encode($output);”之前,我会这样做,对吗?我仍然想把它转换成json,这样我的js例程就知道该怎么做了。这并不重要。在这个范围内,您不会将$output更改为json_编码。你只是在呼应一个json_编码的版本。因此,在任何时候使用$output变量都可以。除非您执行类似$output=json_encode($output)$这里的输出实际上没有改变。实际上,有点误读了您的代码。您可以在代码中的任何位置使用$xml。你不能把它倒空。在对$object进行编码后(您再次只回显了编码版本),仍然可以访问$xml,并且它仍然包含请求的结果。这看起来不错。在PHP中发送邮件没有问题。在执行“echo json_encode($output);”之前,我会这样做,对吗?我仍然想把它转换成json,这样我的js例程就知道该怎么做了。这并不重要。在这个范围内,您不会将$output更改为json_编码。你只是在呼应一个json_编码的版本。因此,在任何时候使用$output变量都可以。除非您执行类似$output=json_encode($output)$这里的输出实际上没有改变。实际上,有点误读了您的代码。您可以在代码中的任何位置使用$xml。你不能把它倒空。在对$object进行编码之后(您再次只回显编码版本),仍然可以访问$xml,并且它仍然包含请求的结果。