Android Programming Examples

ChilkatHOMEAndroid™ASPVisual BasicVB.NETC#iOS (IPhone)Objective-CC++CMFCDelphiFoxProJavaPerl
PHP ExtensionPHP ActiveXPythonPowerShellRubySQL ServerVBScript

Android™ Examples

Bounced Email
Digital Certificates
Digital Signatures
DSA
Email Object
Encryption
FTP
HTML-to-XML
HTTP
IMAP
MHT / HTML Email
POP3
RSA
MIME
SMTP
Socket
SOCKS Proxy
Spider
SSH Key
SSH
SFTP
Tar
Upload
XML
XMP
Zip


More Examples...
Amazon S3
NTLM
RSS
Atom
PPMD
Deflate
Bzip2
LZW
Diffie-Hellman
Bz2
Character Encoding
CSV

 

 

 

 

 

 

 

 

(Chilkat for Android™ API)
SFTP Where Did My Upload Go?

This example answers a common question: "I use Chilkat SFTP to upload a file. It says it was successful, but file is not on the server. How do you change directories?"

First, "SFTP" is Secure File Transfer over SSH and has *nothing* to do with FTP (the File Transfer Protocol). It is completely unrelated to FTP. Therefore, FTP concepts such as "current directory", and "binary/ascii transfer modes" don't exist in SFTP.

In SFTP, you authenticate using a user account on the remote server. This could be an actual user account on the server, or a logical user account that exists in the context of the SSH server. In either case, the user account has a home directory. If you open a file on the SSH/SFTP server using only the filename and no path, then your filename will be placed in the user account's home directory. To find out the location of the home directory, call RealPath and pass "." for the directory path. It will return the absolute path of the home directory.

Given that there is no "current directory" concept in SFTP, you must specify either an absolute path or relative path when opening/creating a file that is to be in a directory other than the account's home directory. A relative path is relative to the home directory.

Download: Chilkat for Android™ Java Libraries

// Important: Don't forget to include the call to System.loadLibrary
// as shown at the bottom of this code sample.
package com.test;

import android.app.Activity;
import com.chilkatsoft.*;

import android.widget.TextView;
import android.os.Bundle;

public class SimpleActivity extends Activity {
  // Called when the activity is first created.
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    TextView tv = new TextView(this);
    String outStr = "";

    //  Important: It is helpful to send the contents of the
    //  sftp.LastErrorText property when requesting support.

    CkSFtp sftp = new CkSFtp();

    //  Any string automatically begins a fully-functional 30-day trial.
    boolean success;
    success = sftp.UnlockComponent("Anything for 30-day trial");
    if (success != true) {
        outStr += sftp.lastErrorText() + "\n";
        tv.setText(outStr);
        setContentView(tv);
        return;
    }

    //  Set some timeouts, in milliseconds:
    sftp.put_ConnectTimeoutMs(5000);
    sftp.put_IdleTimeoutMs(10000);

    //  Connect to the SSH server.
    //  The standard SSH port = 22
    //  The hostname may be a hostname or IP address.
    int port;
    String hostname;
    hostname = "www.my-ssh-server.com";
    port = 22;
    success = sftp.Connect(hostname,port);
    if (success != true) {
        outStr += sftp.lastErrorText() + "\n";
        tv.setText(outStr);
        setContentView(tv);
        return;
    }

    //  Authenticate with the SSH server.  Chilkat SFTP supports
    //  both password-based authenication as well as public-key
    //  authentication.  This example uses password authenication.
    success = sftp.AuthenticatePw("myLogin","myPassword");
    if (success != true) {
        outStr += sftp.lastErrorText() + "\n";
        tv.setText(outStr);
        setContentView(tv);
        return;
    }

    //  After authenticating, the SFTP subsystem must be initialized:
    success = sftp.InitializeSftp();
    if (success != true) {
        outStr += sftp.lastErrorText() + "\n";
        tv.setText(outStr);
        setContentView(tv);
        return;
    }

    //  To find the full path of our user account's home directory,
    //  call RealPath like this:
    String absPath;
    absPath = sftp.realPath(".","");
    if (absPath == null ) {
        outStr += sftp.lastErrorText() + "\n";
        tv.setText(outStr);
        setContentView(tv);
        return;
    }
    else {
        outStr += absPath + "\n";
    }

    tv.setText(outStr);
    setContentView(tv);
  }

  static {
      // Important: Make sure the name passed to loadLibrary matches the shared library
      // found in your project's libs/armeabi directory.
      //  for "libchilkat.so", pass "chilkat" to loadLibrary
      //  for "libchilkatemail.so", pass "chilkatemail" to loadLibrary
      //  etc.
      // 
      System.loadLibrary("chilkat");

      // Note: If the incorrect library name is passed to System.loadLibrary,
      // then you will see the following error message at application startup:
      //"The application <your-application-name> has stopped unexpectedly. Please try again."
  }
}

© 2000-2012 Chilkat Software, Inc. All Rights Reserved.