B4A Class Dropbox API V2. All HTTP! All using httputils2

Discussion in 'Additional libraries, classes and official updates' started by DonManfred, Aug 2, 2015.

  1. DonManfred

    DonManfred Expert Licensed User

    Update April 2017:
    Google has changed the ability to use a Webview to get an OAuth-Token. Due to this change it no longer works to get an OAuth-Token using a Webview.
    This library is not useable anymore except if you use the Lib only using YOUR token which is hardcoded in your app. This will work.
    But if you need to get Access to a Users Dropbox then you can´t use this lib anymore. I suggest to switch to my Java-Wrap for the Drobox Api V2. Here you are able to get an OAuth-Token as this lib does not depend on a Webview.

    -----------------------------------------------------------------------------

    As you can read here Dropbox has decided to deprecate the Sync and Datastore APIs over the next 12 months. Drobox has now released an new preview site for the new V2 API

    Dropbox released an API Explorer for their V2 api.
    See the announce too for the explorer.

    --------------------------------------------------------------------------------------------------------------------------------------------

    This thread is about the HTTP version of the new Dropbox V2 api.
    See the documentation here: https://www.dropbox.com/developers-preview/documentation/http#documentation

    The attached B4A Library is using this new HTTP Api

    The Library is available as Library (jar + xml). Please download DropboxV2_libraryfiles_v091.zip to get the files. Extract the content to your additional Librariespath

    Please download DropboxHTTPv2librarysource_V0.91 if you want to change the class. Use this project and compile it to a library to get the correct jar and xml created by yourself
    In most cases you dont need this one.

    DropboxHttpAPI
    Author:
    DonManfred <msy1912@gmail.com>
    Version: 0.93
    • DropBox
      Events:
      • Account (meta As Map)
      • AddFolderMember (meta As Map)
      • Copy (meta As Map)
      • CreateFolder (path_lower As String, name As String)
      • CreateSharedLink (meta As Map)
      • CurrentAccount (meta As Map)
      • Delete (meta As Map)
      • Delta (meta As Map)
      • DownloadLink (meta As Map)
      • FileDownloadFinished (session As Map)
      • FileSearch (result As Map)
      • FileUpload (session As Map)
      • FolderMetadata (meta As Map)
      • GetSharedLinks (meta As Map)
      • GetURLJob (meta As Map)
      • JobStatus (meta As Map)
      • LatestCursor (meta As Map)
      • ListFolder (meta As Map)
      • ListFolders (folders As Map)
      • ListfolderMembers (meta As Map)
      • MetaData (meta As Map)
      • MountFolder (meta As Map)
      • Move (meta As Map)
      • Preview (meta As Map)
      • RelinquishFolderMembership (meta As Map)
      • RemoveFolderMember (meta As Map)
      • Revisions (revs As Map)
      • RevokeSharedLink (meta As Map)
      • SaveURL (meta As Map)
      • ShareFile (meta As Map)
      • ShareFolder (folders As Map)
      • ShareJobStatus (meta As Map)
      • SpaceUsage (meta As Map)
      • Thumbnail (bmp As Bitmap, Tag As Object)
      • TransferFolder (meta As Map)
      • UnmountFolder (meta As Map)
      • UnshareFolder (meta As Map)
      • UpdateFolderMember (meta As Map)
      • UpdateFolderPolicy (meta As Map)
      • UploadSessionFinish (session As Map)
      • UploadSessionStatus (session As Map)
      Methods:
      • IsInitialized As Boolean
        Tests whether the object has been initialized.
      • add_folder_member (shared_folder_id As String, email As String, dropbox_id As String, access_level As String, quiet As Boolean, custom_message As String) As String
        Allows an owner or editor (if the ACL update
        policy allows) of a shared folder to add
        another member.
        For the new member To get access To all the
        functionality For this folder, you will need
        To call mount_folder on their behalf.
        Warning: This endpoint Is in beta And Is subject To
        minor but possibly backwards-incompatible changes.
      • check_job_status (async_job_id As String) As String
        Returns the status of an asynchronous job.
        Warning: This endpoint Is in beta And Is subject To
        minor but possibly backwards-incompatible changes.
      • check_share_job_status (async_job_id As String) As String
        Returns the status of an asynchronous job for
        sharing a folder.
        Warning: This endpoint Is in beta And Is subject To
        minor but possibly backwards-incompatible changes.
      • copy (fromPath As String, toPath As String) As String
        Copy a file or folder to a different location in
        the user's Dropbox.
        If the source path Is a folder all its contents
        will be copied.
      • createfolder (path As String) As String
        Create a folder at a given path.
      • createsharedlink (path As String, shorturl As Boolean) As String
        Create a shared link.
        If a shared link already exists For the given path,
        that link Is returned.

        Note that in the returned PathLinkMetadata, the
        PathLinkMetadata.url field Is the shortened URL
        If CreateSharedLinkArg.short_url argument Is set
        to True.
        Previously, it was technically possible To break
        a shared link by moving Or renaming the corresponding
        File Or folder. In the future, this will no longer
        be the Case, so your app shouldn't rely on this
        behavior. Instead, if your app needs to revoke a
        shared link, use revoke_shared_link.
      • delete (path As String) As String
        Not yet finished....
      • download (path As String, destpath As String, destfile As String) As String
        Download a file from a user's Dropbox.
      • getaccount (accountID As String) As String
        Get information about a user's account.
        The Event
        <code>Example:
        dbx.GetAccount("454365363464")</code>
      • getcurrentaccount As String
        Get information about the current user's account.
        <code>Example:
        dbx.GetCurrentAccount()</code>
      • getdelta (cursor As String, locale As String, includeMediaInfo As Boolean) As String
      • getdownloadlink (path As String) As String
      • getfoldermetadata (SharedFolderID As String, IncludeMembership As Boolean) As String
        Returns shared folder metadata by its folder ID.
        Warning: This endpoint Is in beta And Is subject To
        minor but possibly backwards-incompatible changes.
      • getlatestcursor (path As String, recursive As Boolean) As String
        A way to quickly get a cursor for the folder's state.
        Unlike list_folder, list_folder/get_latest_cursor doesn't
        return any entries. This endpoint is for app which only
        needs to know about new files and modifications and doesn't
        need to know about files that already exist in Dropbox.
      • getmetadata (path As String) As String
        Returns the metadata for a file or folder.
      • getpreview (path As String) As String
        Get a preview for a file. Currently previews are only
        generated for the files with the following extensions:
        .doc, .docx, .docm, .ppt, .pps, .ppsx, .ppsm,
        .pptx, .pptm, .xls, .xlsx, .xlsm, .rtf
      • getrevisions (path As String, revlimit As Int) As String
        Return revisions of a file
      • getsharedlinks (path As String) As String
        Returns a list of LinkMetadata objects for this user,
        including collection links.
        If no path Is given Or the path Is empty, returns a
        list of all shared links For the current user,
        including collection links.
        If a non-empty path Is given, returns a list of all
        shared links that allow access To the given path.
        Collection links are never returned in this Case.

        Note that the url field in the response Is never the shortened URL.
      • getsharefilelink (path As String) As String
      • getspaceusage As String
        Get the space usage information for the current user's account.
        <code>Example:
        dbx.GetSpaceUsage()</code>
      • getthumbnail (path As String, format As String, size As String) As String
        Gets a thumbnail for an image.
        Parameters
        format - jpeg (default) Or png.
        For images that are photos, jpeg should be preferred,
        While png Is better For screenshots And digital art.

        size One of the following values (default: s):
        value dimensions (px)
        xs 32x32
        s 64x64
        m 128x128
        l 640x480
        xl 1024x768
      • geturljob (JobID As String) As String
      • getversion As String
      • initialize (CallbackModule As Object, EventName As String, AccessToken As String, debug As Boolean) As String
        Initialize the Dropbox Class.
        Parameters
        CallbackModule
        EventName
        AccessToken
        debug
        <code>Example:
        dbx.GetAccount("454365363464")</code>
      • listfolder (path As String) As String
        Returns the contents of a folder.
      • listfoldercontinue (cursor As String) As String
      • listfoldermembers (SharedFolderID As String) As String
        Returns shared folder membership by its folder ID.
        Warning: This endpoint is in beta and is subject to
        minor but possibly backwards-incompatible changes.
      • listfoldermemberscontinue (cursor As String) As String
      • listfolders As String
      • listfolderscontinue (cursor As String) As String
        Once a cursor has been retrieved from list_folder_members,
        use this to paginate through all shared folder members.

        Warning: This endpoint Is in beta And Is subject To
        minor but possibly backwards-incompatible changes.
      • logversioninfo As String
      • mount_folder (SharedFolderID As String) As String
        The current user mounts the designated folder.
        Mount a shared folder For a user after they have
        been added As a member. Once mounted, the shared
        folder will appear in their Dropbox.
        Warning: This endpoint Is in beta And Is subject To
        minor but possibly backwards-incompatible changes.
      • move (fromPath As String, toPath As String) As String
        Move a file or folder to a different location in
        the user's Dropbox.
        If the source path Is a folder all its contents
        will be moved.
      • relinquish_folder_membership (SharedFolderID As String) As String
        The current user relinquishes their membership
        in the designated shared folder and will no
        longer have access to the folder. A folder
        owner cannot relinquish membership in their
        own folder.
        Warning: This endpoint Is in beta And Is subject To
        minor but possibly backwards-incompatible changes.
      • remove_folder_member (shared_folder_id As String, email As String, dropbox_id As String, leave_a_copy As Boolean) As String
        Allows an owner or editor (if the ACL update policy
        allows) of a shared folder to remove another member.
        Warning: This endpoint Is in beta And Is subject To
        minor but possibly backwards-incompatible changes.
      • revokesharedlink (url As String) As String
        Revoke a shared link.
        This API Is only supported For full dropbox apps.
      • saveurl (url As String, destpath As String) As String
      • search (path As String, searchquery As String) As String
        Searches for files and folders.
      • sharefolder (Path As String, MemberPolicy As String, acl_update_policy As String, shared_link_policy As String, forceAsync As Boolean) As String
        Parameters:
        path String
        The path To the folder To share. If it does Not exist, Then a new one Is created.

        member_policy String
        MemberPolicy Who can be a member of this shared folder.
        Policy governing who can be a member of a shared folder.
        Only applicable To folders owned by a user on a team.
        The value will be one of the following datatypes.
        New values may be introduced As our API evolves.

        "team" Only a teammate can become a member.
        "anyone" Anyone can become a member.

        acl_update_policy String
        AclUpdatePolicy Who can add And remove members of this shared folder.
        Policy governing who can change a shared folder's access control
        list (ACL). In other words, who can add, remove, or change the
        privileges of members.The value will be one of the following
        datatypes. New values may be introduced as our API evolves.

        "owner" Only the owner can update the ACL.
        "editors" Any editor can update the ACL.
        This may be further restricted To editors on the same team.

        shared_link_policy String
        The policy To apply To shared links created For
        content inside this shared folder.
        Policy governing who can view shared links.The value
        will be one of the following datatypes. New values
        may be introduced As our API evolves.

        "anyone" Links can be shared with anyone.
        "members" Links can only be shared among
        members of the shared folder.

        force_async Boolean
        Whether To force the share To happen asynchronously.
        The default For this field Is False.
      • transfer_folder (SharedFolderID As String, toDropboxID As String) As String
        Transfer ownership of a shared folder to a
        member of the shared folder.
        Warning: This endpoint Is in beta And Is subject To
        minor but possibly backwards-incompatible changes.
      • unmount_folder (SharedFolderID As String) As String
        The current user unmounts the designated folder.
        They can re-mount the folder at a later time using
        mount_folder.
        Warning: This endpoint Is in beta And Is subject To
        minor but possibly backwards-incompatible changes.
      • unsharefolder (SharedFolderID As String, leaveacopy As Boolean) As String
        Allows a shared folder owner to unshare the folder.
        You'll need to call check_job_status to determine
        if the action has completed successfully.
        Warning: This endpoint Is in beta And Is subject To
        minor but possibly backwards-incompatible changes.
      • update_folder_member (shared_folder_id As String, email As String, dropbox_id As String, access_level As String, quiet As Boolean, custom_message As String) As String
        Allows an owner or editor of a shared folder to
        update another member's permissions.
        Warning: This endpoint Is in beta And Is subject To
        minor but possibly backwards-incompatible changes.
      • update_folder_policy (SharedFolderID As String, MemberPolicy As String, acl_update_policy As String, shared_link_policy As String) As String
        Update the sharing policies For a shared folder.
        Warning: This endpoint Is in beta And Is subject To
        minor but possibly backwards-incompatible changes.
      • upload (localpath As String, localFilename As String, dstpath As String, dstfilename As String) As String
        Create a new file with the contents provided
        in the request. Do Not use this To Upload a
        File larger than 150 MB. Instead, create
        an Upload session with UploadSessionStart.
      • uploadsessionstart (sessionMap As Map) As String







    First we need to initialize the Class
    Code:
    dbx.Initialize(Me,"DropBox","access_token",True)
    If you want to use the class just "with your dropbox" then you can create a access_token in the Dropbox App console.

    You can find an example of not using pre-created access_token in Post #45 of this thread.. It is using the OAuth2 Flow to get access to a users Dropbox.

    In order they are listed on the Previewdocumentation site i´ll post Examples (or just description on how to) for each of the used endpoints.

    Code:
    dbx.GetAccount("dbid:AAB2cfhttqMg1RjLLRlFzYWWoY6lUpWKsKo")
    ' Event
    Sub DropBox_Account(meta As Map)
        
    Log("Dropbox_Account: "&meta)
    End Sub
    Get information about a user's account. In this case it wil get informations about MY (DonManfred) dropboxaccount.

    Code:
    dbx.GetCurrentAccount
    ' Event
    Sub DropBox_CurrentAccount(meta As Map)
        
    Log("Dropbox_CurrentAccount: "&meta)
    End Sub
    Get information about the current user's account. It will result in giving YOUR (the developer) account.

    Code:
    dbx.GetSpaceUsage

    ' Event
    Sub DropBox_SpaceUsage(space As Map)
        
    Log($"DropBox_SpaceUsage(${space})"$)
    End Sub
    Get the space usage information for the current user's account.


    Code:
    dbx.GetMetadata("/b4arulez.gif")

    ' Event
    Sub DropBox_MetaData(meta As Map)
        
    Log("Dropbox_MetaData: "&meta)
    End Sub
    Returns the metadata for a file or folder.



    Code:
    dbx.Listfolder("/Export")
    ' dbx.ListfolderContinue is called from the result-sub
    ' automatically if there are more results

    ' Event
    Sub DropBox_ListFolder(meta As Map)
        
    Log("Dropbox_Listfolder: "&meta)
        
    Dim cursor As String = meta.Get("cursor")
        
    Dim has_more As String = meta.Get("has_more")
        
    Dim entries As List = meta.Get("entries")
        
    For Each colentries As Map In entries
            
    Dim path_lower As String = colentries.Get("path_lower")
            
    Dim name As String = colentries.Get("name")
            filelistfolder.Add(name)

            
    Dim tag As String = colentries.Get(".tag")
        
    Next
        
    If has_more = True Then
            dbx.ListfolderContinue(
    cursor)
        
    Else
            
    Log("No more files")
            
    Log($"FilesInFolder(${filelistfolder.Size})"$)
            
    For i = 0 To filelistfolder.Size-1
                LogColor(filelistfolder.Get(i),
    Colors.Yellow)
            
    Next
            
    Dim resulting_files As List = WildCardFilesList(filelistfolder,"*.csv",True,True)
            
    For i = 0 To resulting_files.Size-1
                LogColor(resulting_files.Get(i),
    Colors.Green)
            
    Next

            
    'kvs.PutObject("filelistfolder", filelistfolder)
        End If

    End Sub
    Returns the contents of a folder.
    NOTE (from Dropbox): We're definitely going to streamline this interface.




    Code:
    dbx.GetLatestCursor("/",False)

    ' Event
    Sub DropBox_LatestCursor(meta As Map)
        
    Log("DropBox_LatestCursor()")
        
    Dim cursor As String = meta.Get("cursor")
        longpollcursor = 
    cursor
        kvs.PutSimple(
    "longpollcursor",cursor)
        
    Log("longpollcursor set: "&cursor)
    End Sub
    A way to quickly get a cursor for the folder's state. Unlike list_folder, list_folder/get_latest_cursor doesn't return any entries. This endpoint is for app which only needs to know about new files and modifications and doesn't need to know about files that already exist in Dropbox.






    Code:
    dbx.Download("/9-patch-assets.zip",File.DirDefaultExternal,"9patch.zip")


    ' Event is missing as yet.
    Download a file from a user's Dropbox.
    As i´m writing this forumpost i see that this method is missing a event when finished. It is working and saving the file as you can see it in the logs but the event is missing. TODO


    Code:
    Dim session As Map
        session.Initialize
        session.Put(
    "srcpath","/storage/emulated/0/Download")
        session.Put(
    "srcfile","20150716151904894.pdf")
        session.Put(
    "dstpath","/Export")
        session.Put(
    "dstfile","20150716151904894.pdf")
        session.Put(
    "offset",0)
        session.Put(
    "packetsize",16384)
        dbx.UploadSessionStart(session)
    ' This is raising multiple events.
    Sub DropBox_UploadSessionStatus(session As Map)
        
    Dim pro As Double = session.Get("offset")/(session.Get("filesize")/100)
        Label1.Text = session.Get(
    "offset")&" / "&session.Get("filesize")&" -> "&pro
    End Sub
    Sub DropBox_UploadSessionFinish(session As Map)
        
    Log("DropBox_UploadSessionFinish()")
        
    Log(session)
    End Sub
    Start a new upload session. This is used to upload a single file with multiple calls. I´ve tried it with files up to 20mb but should work with 500mb as well.


    Code:
    dbx.Upload(extsdcard,"app-release.apk","/","app-releaseTEST.apk")
    ' Event
    Sub DropBox_FileUpload(meta As Map)
        
    Log("Dropbox_FileUpload: "&meta)

        
    Dim path As String = meta.Get("path_lower")
        
    Log("Path: "&path)
        
    Dim rev As String = meta.Get("rev")
        
    Log("Rev: "&rev)
        
    Dim name As String = meta.Get("name")
        
    Log("Name: "&name)
        
    Dim size As Int = meta.Get("size")
        
    Log("FileSize: "&size)
        
    Dim client_modified As String = meta.Get("client_modified")
        
    Dim server_modified As String = meta.Get("server_modified")
        
    Log("ClientModified: "&client_modified)
        
    Log("ServerModified: "&server_modified)
    End Sub
    Create a new file with the contents provided in the request. Should only be used for small files. Maybe up to for example 2mb... It is using ONE httputilscall to transfer the file.


    Code:
    dbx.Search("","libmysql")
    ' Event
    Sub DropBox_FileSearch(meta As Map)
        
    Log("Dropbox_FileSearch: "&meta)
    End Sub
    Searches for files and folders in your dropbox.



    Code:
    dbx.CreateFolder("/Export")
    ' Event
    Sub DropBox_Createfolder(path As String,filename As String)
        
    Log($"DropBox_Createfolder(${path},${filename})"$)
    End Sub
    Create a folder at a given path.
    No file or folder may exist at the path. The parent folder will be created if it does not already exist (and so on). If the parent exists it must be a folder (and the same for any ancestor). If an ancestor is a shared folder it must have write access.

    Code:
    dbx.delete(("/9-patch-assets.zip")
    ' Event
    Delete the file or folder at a given path.
    If the path is a folder all its contents will be deleted too.


    Code:
    ' Copy a FILE
        ' Source and Destination should point to a file
        'dbx.copy("/Export/b4arulez.gif","/copyofb4arulez.gif")

        
    ' Copy a FOLDER
        'dbx.copy("/Export","/copyfoldertest")
        ' will resulting in creating a folder copyfoldertest
        ' and then all files from Export will be copied to copyfoldertest/

    ' Event
    Sub Dropbox_copy(copyinfo As Map)
        
    Log($"DropBox_copy(${copyinfo})"$)
    End Sub
    If the path is a folder all its contents will be deleted too.


    Code:
    ' Move  a FILE
        ' Move a FILE
        'dbx.move("/copyofb4arulez.gif","/newnameofb4arulez.gif")

        
    ' Move a FOLDER
        dbx.move("/copyfoldertest","/newdestfoldertest")

    ' Event
    Sub Dropbox_move(moveinfo As Map)
        
    Log($"DropBox_copy(${moveinfo})"$)
    End Sub

    This method is NOT FINISHED as yet. DON´T USE it actually. TODO

    Code:
    dbx.GetThumbnail("/2000likes.png","png","s")
       
    'Parameters
       'format jpeg (default) Or png. For images that are photos,
       ' jpeg should be preferred, While png Is better For screenshots And digital art.
      '
      ' size One of the following values (default: s):
      'value   dimensions (px)
      ' xs     32x32
      ' s       64x64
      ' m       128x128
      ' l       640x480
      ' xl     1024x768

    ' Event
    Sub Dropbox_Thumbnail(thumb As Bitmap, Tag As Object)
       
    Log($"DropBox_Thumbnail(${Tag})"$)
       iv1.Bitmap = thumb
    End Sub
    Get a thumbnail for an image.


    Code:
    dbx.GetRevisions("/B4A/LibMySQL/MySQLExample.zip",100)
    ' Event
    Sub DropBox_Revisions(revlist As Map)
       
    Log("DropBox_Revisions()")
       
    Log(revlist)
       
    Dim is_deleted As String = revlist.Get("is_deleted")
       
    Dim entries As List = revlist.Get("entries")
       
    For Each colentries As Map In entries
         
    Dim path As String = colentries.Get("path_lower")
         
    Dim revision As String = colentries.Get("rev")
         
    Dim name As String = colentries.Get("name")
         
    Dim client_modified As String = colentries.Get("client_modified")
         
    Dim size As Int = colentries.Get("size")
         
    Dim server_modified As String = colentries.Get("server_modified")
         
    Log($"FileRev(${path}):${revision}->${size} "$)
       
    Next


       
    'kvs.PutSimple("longpollcursor",cursor)
    End Sub
    Return revisions of a file

    Update:: August, 20th, 2017
    If you want to use Dropbox to connect to the USERS Dropbox (not YOURS) then you should look at the DropboxV2-OAuth2.zip example. It shows the way on how to get an Axccesstoken using the V2 endpoints.


    The following methods are missing totally as yet: TODO

    - Restore

    TODO:

    -

    Dependencies:
    - httputils2 (okHTTP)
    - JSON
    - RandomAcessFile
    - KeyValueStore (used in example but not really needed by the class or Library)


    This Class is open source and free to used and extended by anyone!

    If you want to donate for my work building the class you can do it here: [​IMG]
     

    Attached Files:

    Last edited: Aug 20, 2017
  2. DonManfred

    DonManfred Expert Licensed User

    Please note that in the class you´ll find more methods than listed here... These methods are from the base core API V1.

    Some of them are useful though. But they are not part of the V2 api as yet (maybe Dropbox will implement them in future; if they i´ll extend the class). But they are in the class and can be used.

    Code:
    Log(dbx.GetDownloadLink("b4arulez.gif"))
    Log(dbx.GetShareFileLink("b4arulez.gif"))
    dbx.SaveURL(
    "http://snapshots.basic4android.de/2000likes001.png","/2000likes.png")
    dbx.GetURLJob(
    "ToZD0ArtpcUAAAAAAAC1wQ")
     
    Last edited: Aug 2, 2015
    sonicmayne likes this.
  3. little3399

    little3399 Active Member Licensed User

    Well Done, It can be using in B4I and B4J also ...
     
  4. DonManfred

    DonManfred Expert Licensed User

    maybe. It´s nothing magical ;-)

    I didnt test it with B4J as yet

    I dont have B4i to test it with.
     
  5. DonManfred

    DonManfred Expert Licensed User

    Added copy and move to the class.

    Updated library (0.85) can be found in post #1
     
  6. DonManfred

    DonManfred Expert Licensed User

    Mahares likes this.
  7. Mahares

    Mahares Well Known Member Licensed User

    Has anybody tried to use @DonManfred 's API V2 beta Dropbox Class .85 to download multiple files and then completely exit the application after the download completes. If so, can you share some code or a simple example to make it more clear as I am struggling with this for days. I tried it using a main Activity, the Dropbox class .85 module and a service scheduled every 10 minutes to download 5 or 6 files (the largest file is only 4.5 MB (most of the time it is less that 1 MB) and the smallest is 1 KB). It downloads all files some of the time , but other times it downloads only three, even when I remove the file that just downloaded from the list in jobdone.. The class is great for downloading one file or multiple files when you do not want to close the program immediately after download completes, but when I want the application to automatically finish after download, that is when I run into problems.
    Thank you for helping
     
    Reinierus likes this.
  8. DonManfred

    DonManfred Expert Licensed User

    I still have your project on my harddisc and i will create an working example for you.
    But sadly at these days i´m really busy doing job-work and i´m not in the mood after work to do coding with b4a.

    Hopefully i´ll find some time this weekend for your issue
     
  9. Mahares

    Mahares Well Known Member Licensed User

    Thanks @DonManfred: I will PM to you my project that works a good part of the time, but occasionally skips downloading some files, particularly when the device is turned on. Although I placed the remove from list inside the jobdone sub, I am not getting the consistency that a properly designed app should have. It has to do with something I am missing with the concept.
     
  10. DonManfred

    DonManfred Expert Licensed User

    Note that the explorer did not work with firefox as this time. You should use an alternative browser to use the explorer.
     
  11. Alberto Michelis

    Alberto Michelis Active Member Licensed User

    Hi, trying to test the example I get errors, whats wrong?
    Thanks
     

    Attached Files:

  12. DonManfred

    DonManfred Expert Licensed User

    You need to mark httputils and okhttp lib
    Make sure you updated your httputils to the new one using okhttp
     
  13. Alberto Michelis

    Alberto Michelis Active Member Licensed User

    I have Okhttp v1 and Httputils2 v 2.01
     

    Attached Files:

  14. DonManfred

    DonManfred Expert Licensed User

    Can you upload a small project which failes compiling? I have the same libs

    Which android. Jar did you select in select paths?

    Which android version are you using?
     
  15. Alberto Michelis

    Alberto Michelis Active Member Licensed User

    AndrioidSdk\platforms\android-19\android.jar
    4.4.2
     

    Attached Files:

  16. Alberto Michelis

    Alberto Michelis Active Member Licensed User

    Besides... looking at my android.jar I see I have 8,13,19,20 and 22 installed.
    How do I know which one to use?
    Do I have to use the last one? 22?
     
  17. Mahares

    Mahares Well Known Member Licensed User

    I use Httputils2 v 2.1 not 2.01. I also use AndroidSdk\platforms\android-22\android.jar not 19, but I am not sure if that is what is causing your problem. You can try the newer ones, but you may have to see if @DonManfred gives you his blessings by confirming or correcting.
     
  18. DonManfred

    DonManfred Expert Licensed User

    Try to add http lib too. Interestingly I got the same error today.

    It is a good idea to use the newest android jar
     
  19. Alberto Michelis

    Alberto Michelis Active Member Licensed User

    Adding HTTP solved the problem... but does okhttp replace http?
     
  20. Alberto Michelis

    Alberto Michelis Active Member Licensed User

    How do I use this lib?
    - I have a dropbox account
    - Do I need to have dropbox installed in the phone?
    If Yes why do I need this lib if I can copy files from the dropbox dir in the phone
    If No how do I set the lib to use MY dropbox account?
    Thanks
     
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice