在肥皂请求中处理回车

时间:2017-12-15 06:08:30

标签: php web-services curl

我在PHP中编写代码以使用curl发送soap请求。在soap请求中,我必须发送包含许多回车的文本文件的数据。我尝试使用\ n,\ r \ n,\ r \ n \ n \ n,\ n \ n \ n \ n(\ n \ n(13)等“发送”回车“但是所有这些都是从服务器发出以下错误

发送的数据中的行应仅由单个CR字符分隔。此文件似乎使用LF作为分隔符。

以下是我的Soap请求。我正在开发linux并向Windows服务器发送请求。

<?php
    $submitFileTxt 	  .= "Line1 Text"."\r";
    $submitFileTxt 	  .= "Line2 Text"."\r";
    $submitFIleTxt    .= "Test,Test,Test"."\r";
    $submitFIleTxt    .= "Testtext,Testtext,Testtext"."\r";

    $wsdl 		= "somewsdlurl?wsdl"; 
    $local_cert = "certificate file path";
    $password   = '';
    $xml_post_string = "<s:Envelope xmlns:a='http://www.w3.org/2005/08/addressing' xmlns:s='http://www.w3.org/2003/05/soap-envelope'>
    <s:Header>
    	<a:Action s:mustUnderstand='1'>Data submit method</a:Action>
    </s:Header>
    <s:Body>
    	<Submit>
    	<data xmlns:i='http://www.w3.org/2001/XMLSchema-instance'>
    		<OutputFileBody>{$submitFIleTxt}</OutputFileBody>
    	    <OutputFilename>Some file name</OutputFilename>
    	 </data>
    	</Submit>
     </s:Body>
  </s:Envelope>";	  

   $headers = array(
        "Content-type: application/soap+xml;charset=\"utf-8\"",
        "Accept: text/xml",
        "Cache-Control: no-cache",
        "Pragma: no-cache",
        "Content-length: ".strlen($xml_post_string),
    );  

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,          $wsdl);
    curl_setopt($ch, CURLOPT_SSLCERTTYPE,   "pem");
    curl_setopt($ch, CURLOPT_SSLCERT,      $local_cert);
    curl_setopt($ch, CURLOPT_SSLKEYPASSWD, $password);
    curl_setopt($ch, CURLOPT_SSLKEY,       $local_cert);

    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 50);
    curl_setopt($ch, CURLOPT_SSLVERSION, 6);

    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $xml_post_string); // the SOAP request
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

    $response = curl_exec($ch); 
    $err = curl_error($ch); 
    curl_close($ch);

1 个答案:

答案 0 :(得分:0)

您可以使用&#10;代替\ n \ \和$PSADToolKitInstallWrapper = "C:\Temp\MyPackage\PS-AppDeploy.ps1" $PSADToolKitParameters = @{ "DeploymentType" = "Uninstall"; "DeployMode" = "Interactive"; "AllowRebootPassThru" = $True; "TerminalServerMode" = $False; "DisableLogging" = $False; } $InstallStatus = Start-Process -FilePath "PowerShell.exe" -ArgumentList $PSADToolKitInstallWrapper @PSADToolKitParameters -Wait -PassThru Write-Host "Exit-Code: $( $InstallStatus.ExitCode )" 取代\ n。