Search code examples
resturlftpftps

URL for my FTPs server to put as a REST method parameter


A REST API has a method for reading from a .csv file that exists on a URL and claims that this URL can either be a public address or an FTP server.

I have already succeeded at uploading the file to an FTPs server, but that is not my question here. What I want to know is that if my file is already uploaded to an FTPs server with the following properties

Host: 111.222.333.444
Port: XX
Username: myUserName
Password: myPassword
Working directory: /home/myFolder
File name: myFile.csv

how will the URL look like?

The URL that the API accepts is of course a string value. I have read in this page that if I write the value as

ftp://YourFtpUser%40YourDomain.com:[email protected]

It will work. But replacing my values in this address is not getting me anywhere. How will I know what format to use?

Update: Log file using WinSCP. I replaced the real identity values.

. 2015-11-27 14:09:17.664 --------------------------------------------------------------------------
. 2015-11-27 14:09:17.664 WinSCP Version 5.7.6 (Build 5874) (OS 6.1.7601 Service Pack 1 - Windows 7 Enterprise)
. 2015-11-27 14:09:17.664 Configuration: HKCU\Software\Martin Prikryl\WinSCP 2\
. 2015-11-27 14:09:17.665 Log level: Normal
. 2015-11-27 14:09:17.665 Local account: ACTIONBASE\pedram.mobedi
. 2015-11-27 14:09:17.665 Working directory: C:\Program Files (x86)\WinSCP
. 2015-11-27 14:09:17.665 Process ID: 15780
. 2015-11-27 14:09:17.665 Command-line: winscp.exe  "ftp://myUserName:[email protected]:22/" /log=C:\mylog.log
. 2015-11-27 14:09:17.665 Time zone: Current: GMT+1, Standard: GMT+1 (W. Europe Standard Time), DST: GMT+2 (W. Europe Daylight Time), DST Start: 2015-03-29, DST End: 2015-10-25
. 2015-11-27 14:09:17.665 Login time: den 27 november 2015 14:09:17
. 2015-11-27 14:09:17.665 --------------------------------------------------------------------------
. 2015-11-27 14:09:17.665 Session name: [email protected] (Ad-Hoc site)
. 2015-11-27 14:09:17.665 Host name: 111.222.333.444 (Port: 22)
. 2015-11-27 14:09:17.665 User name: myUsername (Password: Yes, Key file: No)
. 2015-11-27 14:09:17.665 Transfer Protocol: FTP
. 2015-11-27 14:09:17.665 Ping type: C, Ping interval: 30 sec; Timeout: 15 sec
. 2015-11-27 14:09:17.665 Disable Nagle: No
. 2015-11-27 14:09:17.665 Proxy: none
. 2015-11-27 14:09:17.665 Send buffer: 262144
. 2015-11-27 14:09:17.665 UTF: 2
. 2015-11-27 14:09:17.665 FTP: FTPS: None; Passive: Yes [Force IP: A]; MLSD: A [List all: A]
. 2015-11-27 14:09:17.665 Local directory: default, Remote directory: /home/myUsername/pedramtest/, Update: Yes, Cache: Yes
. 2015-11-27 14:09:17.665 Cache directory changes: Yes, Permanent: Yes
. 2015-11-27 14:09:17.665 Timezone offset: 0h 0m
. 2015-11-27 14:09:17.665 --------------------------------------------------------------------------
. 2015-11-27 14:09:17.734 Connecting to 111.222.333.444:22 ...
. 2015-11-27 14:09:17.734 Connected with 111.222.333.444:22. Waiting for welcome message...
< 2015-11-27 14:09:17.734 SSH-2.0-OpenSSH_6.0p1 Debian-4+deb7u2
. 2015-11-27 14:09:32.870 Timeout detected. (control connection)
. 2015-11-27 14:09:32.870 Connection failed.
* 2015-11-27 14:09:32.901 (EFatal) Connection failed.
* 2015-11-27 14:09:32.901 Timeout detected. (control connection)
* 2015-11-27 14:09:32.901 Connection failed.

Solution

  • We do not know your REST API, so we cannot know the format it supports.


    Anyway, assuming the API follows standards (RFC 1738) the URL format would be:

    ftp://myUserName:[email protected]:XX/home/myFolder/myFile.csv
    

    As far as I know, there's no standard for the FTPS. Though the ftps:// is commonly used for an FTP over implicit TLS/SSL connection. Few clients do support the ftpes:// for an explicit TLS/SSL.

    You can omit the :XX, if the port number is 21 (or 990 for the implicit TLS/SSL).


    Regarding your attempt with WinSCP:

    1. You use the ftp://, not the ftps://, so obviously a non-encrypted FTP connection is tried.
    2. Anyway, the server is neither FTP nor FTPS, but SFTP (SSH). You can tell that by the "SSH-2.0-OpenSSH_6.0p1 Debian-4+deb7u2" banner instead of an FTP welcome message. The SFTP is a completely different protocol to the FTPS.
      See Differences between SFTP and "FTP over SSH" or
      Is "SFTP" and "FTP over SSL" a same thing?