WCF服务使用FTP作为传输

时间:2014-10-01 01:51:46

标签: web-services wcf soap ftp

有点边缘问题,但这里有。

我正在研究编写使用FTP协议访问的WCF服务的方法。客户端将运行的系统通过端口21访问FTP - 所有其他流量都被阻止,并且通过端口21的非FTP流量也被过滤掉(尝试通过运行RESTful服务)港口21没有运气)。我已经读过SOAP可以用于各种协议(HTTP,FTP,SMTP等)。我在各种端口上使用HTTP绑定使服务正常工作,但我仍然坚持将其绑定到FTP。有没有人有这方面的经验?

1 个答案:

答案 0 :(得分:0)

  

作为从SOAP到另一个环境的网关的一个例子,可以想象一个SOAP到FTP网关,其中FTP命令被映射到SOAP消息。为了实际与FTP服务器通信,调用必须用FTP可理解的语言表达,而不是用SOAP表示。

<?php 
$myLogin = 'foo';
$myPass = 'bar';

$env = '<S:Envelope
   xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
   <S:Header>
      <m:path xmlns:m="http://www.soap.org/path">
         <m:action>http://www.im.org/chat</m:action>
         <m:to>soap://D.com/some/endpoint</m:to>
         <m:forward>
            <m:via>soap://B.com</m:via>
            <m:via>soap://C.com</m:via>
         </m:forwawd>
         <m:reverse>
            <m:via/>
         </m:reverse>
         <m:from>mailto:frystyk@microsoft.com</m:from>
         <m:id>uuid:84b9f5d0-33fb-4a81-b02b-5b760641c1d6</m:id>
      </m:path>
   </S:Header>
   <S:Body>
      ...
   </S:Body>
</S:Envelope>';

$socket=fsockopen('http://example.com', 21); 
$t=fgets($socket, 128); 
fwrite($socket, "USER $myLogin\r\n"); 
$t=fgets($socket, 128); 
fwrite($socket, "PASS $myPass\r\n"); 
$t=fgets($socket, 128); 
fwrite($socket, "PUTS $env\r\n"); 
fwrite($socket, "QUIT\r\n"); 
fclose($socket); 
?>

<强>参考