B4J Library [B4X] xHttpServer (Http Server + jQuery)

It is a personal project of mine that I started as a hobby on B4i and it has become an interesting project, so that I have modified it to be multiplatform.

It is an http server, which allows a browser to navigate on html pages stored on the device. In addition, dynamic pages can also be created. Read the parameters of the GET and POST commands and read and write the COOKIES in the browser.
It also implements the WebSocket, starting from an example published in this forum by @Erel for the jServer library. I also made the jQueryElement class to interface with the JavaScript elements of the Browser page.
(You can get the source of the QueryElement class at this Post)

Obviously it is not at the level of existing and established servers, but it is a project that I want to share and that I think can be useful since it is cross-platform. The examples are in post 2

It is entirely written in B4X.
It may have some bugs
It does not support SSL / TLS. I didn't understand how it works.


aHttpServer

Author:
Star-Dust
Version: 0.77
  • QueryElement
    • Events:
      • change (Resp As ServletResponse, Params As Map) ' QueryElement Event Click
      • click (Resp As ServletResponse, Params As Map) ' QueryElement Event Click
      • dblclick (Resp As ServletResponse, Params As Map) ' QueryElement Event Click
      • focus (Resp As ServletResponse, Params As Map) ' QueryElement Event Click
      • focusin (Resp As ServletResponse, Params As Map) ' QueryElement Event Click
      • focusout (Resp As ServletResponse, Params As Map) ' QueryElement Event Click
      • keyup (Resp As ServletResponse, Params As Map) ' QueryElement Event Click
      • mousedown (Resp As ServletResponse, Params As Map) ' QueryElement Event Click
      • mouseenter (Resp As ServletResponse, Params As Map) ' QueryElement Event Click
      • mouseleave (Resp As ServletResponse, Params As Map) ' QueryElement Event Click
      • mousemove (Resp As ServletResponse, Params As Map) ' QueryElement Event Click
      • mouseup (Resp As ServletResponse, Params As Map) ' QueryElement Event Click
    • Fields:
      • Event_change As String
      • Event_click As String
      • Event_dblclick As String
      • Event_focus As String
      • Event_focusin As String
      • Event_focusout As String
      • Event_keyup As String
      • Event_mousedown As String
      • Event_mouseenter As String
      • Event_mouseleave As String
      • Event_mousemove As String
      • Event_mouseup As String
      • NoEvent As Map()
    • Functions:
      • Class_Globals As String
      • CreateEvent (ObjectName As String, Event As String, OtherEvent As Map()) As Map()
      • EscapeHtml (Raw As String) As String
      • Eval (Script As String, Params As List) As String
      • EvalWithResult (Script As String, Params As List) As String
      • GetPropriety (Property As String, Value As List) As String
      • GetVal (ID As String, ValueList As List) As String
      • Initialize (Response As ServletResponse) As String
        Initializes the object. You can add parameters to this method if needed.
      • IsInitialized As Boolean
        Verifica se l'oggetto sia stato inizializzato.
      • RunFunction (function As String, ID As String, Params As List) As String
        Param = list or array: array as Map or String (array as Object is wrong)
      • RunFunctionWithResult (function As String, ID As String, Params As List) As String
      • RunMethod (Method As String, ID As String, Params As List) As String
        Param = list or array: array as Object is wrong - array as Map is correct
      • RunMethodWithResult (Method As String, ID As String, Params As List) As String
        Param = list or array: array as Object is wrong - array as Map is correct
      • SelectElement (ID As String) As String
      • SetCommand (etype As String, Method As String, property As String, ID As String, Params As List, Arg As List) As String
      • SetCSS (id As String, Params As List) As String
      • SetDialog (id As String, Params As List) As String
        Public Sub GetWidth As Object
        End Sub
      • SetHtml (id As String, Params As List) As String

        Public Sub SetHeight (Value As String)
        End Sub
      • SetPropriety (Property As String, Value As List) As String
      • SetText (ID As String, TextList As List) As String
      • SetVal (ID As String, ValueList As List) As String
    • Properties:
      • AutomaticEvents
  • ServletRequest
    • Fields:
      • CharacterEncoding As String
      • ConnectionAlive As Boolean
      • ContentLength As Long
      • ContentType As String
      • ID As String
      • LogActive As Boolean
      • LogFirstRefuse As Boolean
      • MultipartFilename As Map
      • RequestCookies As Map
      • RequestHeader As Map
      • RequestParameter As Map
      • RequestPostDataRow As List
      • Timeout As Long
    • Functions:
      • ArrayInsert (DataSource As Byte(), Index As Int, DataInsert As Byte()) As Byte()
      • ArrayRemove (Data As Byte(), Start As Int, Last As Int) As Byte()
      • Class_Globals As String
      • Close As String
      • Connected As Boolean
      • GetHeader (Name As String) As String
      • GetHeadersName As List
        can be used to iterate over Header
        Example
        <code>
        For Each Name As String In ServletRequest.GetHeadersName
        Log("Value = " & ServletRequest.GetHeader(Name))
        Next</code>
      • GetInputStream As InputStream
      • GetMethod As String
      • GetRequestHOST As String
      • GetRequestURI As String
      • GetWebSocketCompressDeflateAccept As Boolean
      • GetWebSocketCompressGzipAccept As Boolean
      • GetWebSocketMapData As Map
      • GetWebSocketStringData As String
      • Initialize (CallBack As Object, EventName As String, Sck As Socket) As String
        Initializes the object. You can add parameters to this method if needed.
      • IsInitialized As Boolean
        Verifica se l'oggetto sia stato inizializzato.
      • ParameterMap As Map
      • RemoteAddress As String
      • RemotePort As Int
      • SubArray2 (Data As Byte(), Start As Int, Last As Int) As Byte()
  • ServletResponse
    • Fields:
      • CharacterEncoding As String
      • ContentLenght As Int
      • ContentType As String
      • Status As Int
    • Functions:
      • Class_Globals As String
      • Close As String
      • Connected As Boolean
      • Initialize (Req As ServletRequest, ast As AsyncStreams, Sck As Socket) As String
        Initializes the object. You can add parameters to this method if needed.
      • IsInitialized As Boolean
        Verifica se l'oggetto sia stato inizializzato.
      • ResetCookies As String
      • SendFile (Dir As String, fileName As String) As String
        don't use DirAssets
      • SendFile2 (Dir As String, fileName As String, Content_Type As String) As String
      • SendNotFound (filenameNotFound As String) As String
      • SendRaw (Data As Byte()) As String
      • SendRedirect (Address As String) As String
      • SendString (Text As String) As String
        sending text with Header
      • SendWebSocketBinary (Data As Byte(), Masked As Boolean) As String
      • SendWebSocketClose As String
      • SendWebSocketPing As String
      • SendWebSocketPong As String
      • SendWebSocketString (Text As String, Masked As Boolean, Compressed As String) As String
        Cmpressed as Deflate=zlib, gzip, none - (set always none)
      • SetCookies (Name As String, Value As String) As String
        Set Cokies values on Browser
      • SetHeader (Name As String, Value As String) As String
      • Write (Text As String) As String
        Sending text without header to dynamically send more text after the SendString
    • Properties:
      • OutputStream As OutputStream [read only]
      • Query As QueryElement [read only]
  • httpServer
    • Events:
      • Handle (req As ServletRequest, resp As ServletResponse)
      • HandleWebSocket (req As ServletRequest, resp As ServletResponse)
      • NewConection (req As ServletRequest)
      • SwitchToWebSocket (req As ServletRequest, resp As ServletResponse)
      • UploadedFile (req As ServletRequest, resp As ServletResponse)
      • WebSocketClose (CloseCode As Int, CloseMessage As String)
    • Fields:
      • DigestAuthentication As Boolean
      • DigestPath As String
      • htdigest As List
      • IgnoreNC As Boolean
      • realm As String
      • Timeout As Int
    • Functions:
      • Class_Globals As String
      • GetMyIP As String
      • GetMyWifiIp As String
      • Initialize (CallBack As Object, EventName As String) As String
        Initializes the object. You can add parameters to this method if needed.
      • IsInitialized As Boolean
        Verifica se l'oggetto sia stato inizializzato.
      • Start (Port As Int)
        eg. Start(51051)
      • Stop As String
    • Properties:
      • TempPath As String [read only]
 

Attachments

  • aHttpServer 0.77.zip
    35.2 KB · Views: 187
  • jHttpServer 0.77.zip
    35.1 KB · Views: 192
  • iHttpServer 0.77.zip
    446 KB · Views: 170
Last edited:

Star-Dust

Expert
Licensed User
Longtime User
Example (B4xPages)
The examples have been updated to make the code more readable. In particular, the example on WebSocket has been modified so that each example page of the websocket is contained in a specific code module for that page.

-------------------- SampleHttp ----------------------------------------------------------- SampleWebSocket --------------------

 

Attachments

  • SampleHttpPages.zip
    286.6 KB · Views: 778
  • SampleWebSocketPages.zip
    139 KB · Views: 658
Last edited:

Star-Dust

Expert
Licensed User
Longtime User
You can request the source code of the library by writing me privately.

Donations are welcome for this library which has required considerable work
 
Last edited:

Waldemar Lima

Well-Known Member
Licensed User
Longtime User
Still keep with problem ... ?

B4X:
B4i Version: 7.20
Parsing code.    (0.00s)
Building folders structure.    (0.06s)
Compiling code.    (0.01s)
Compiling layouts code.    (0.00s)
Compiling debugger engine code.    (0.00s)
Building Xcode project.    (1.81s)
Preparing project for builder.    (0.03s)
    Project size: 0.16 MB
Sending data to remote compiler.    Error
B4i line: 29
Private Svr As httpServer
unknown receiver 'b4i_httpserver'; did you mean 'b4i_server'?

Out: Command line invocation:
    /Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild -configuration Release PRODUCT_NAME=HttpServer CONFIGURATION_BUILD_DIR=/Users/administrator/Documents/UploadedProjects/<user id>/Payload "CODE_SIGN_IDENTITY=iPhone Distribution: Waldemar Lima (XXXXXXXXX)" "OTHER_CODE_SIGN_FLAGS=--keychain <user id>" PROVISIONING_PROFILE=6xxxxxx-xxxxxxxx-xxxxxxxxx-xxxxx -arch arm64

Build settings from command line:
    ARCHS = arm64
    CODE_SIGN_IDENTITY = iPhone Distribution: Waldemar Lima (XXXXXXXXX)
    CONFIGURATION_BUILD_DIR = /Users/administrator/Documents/UploadedProjects/<user id>/Payload
    OTHER_CODE_SIGN_FLAGS = --keychain <user id>
    PRODUCT_NAME = HttpServer
    PROVISIONING_PROFILE = 6xxxxxx-xxxxxxxx-xxxxxxxxx-xxxxx

note: Using new build system
note: Using codesigning identity override: iPhone Distribution: Waldemar Lima (XXXXXXXXX)
note: Planning build
note: Constructing build description
warning: The iOS deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.3.99. (in target 'B4iProject' from project 'B4iProject')
warning: Provisioning profile "PartyGo Provision" for "B4iProject" contains entitlements that aren't in the entitlements file: com.apple.developer.coremedia.hls.low-latency. To use these entitlements, add them to your entitlements file. Otherwise, remove unused entitlements from your provisioning profile. (in target 'B4iProject' from project 'B4iProject')
CreateBuildDirectory /Users/administrator/Documents/UploadedProjects/<user id>/build (in target 'B4iProject' from project 'B4iProject')
    cd /Users/administrator/Documents/UploadedProjects/<user id>
    builtin-create-build-directory /Users/administrator/Documents/UploadedProjects/<user id>/build

MkDir /Users/administrator/Documents/UploadedProjects/<user id>/Payload/HttpServer.app (in target 'B4iProject' from project 'B4iProject')
    cd /Users/administrator/Documents/UploadedProjects/<user id>
    /bin/mkdir -p /Users/administrator/Documents/UploadedProjects/<user id>/Payload/HttpServer.app

ProcessProductPackaging /Users/administrator/Library/MobileDevice/Provisioning\ Profiles/6xxxxxx-xxxxxxxx-xxxxxxxxx-xxxxx.mobileprovision /Users/administrator/Documents/UploadedProjects/<user id>/Payload/HttpServer.app/embedded.mobileprovision (in target 'B4iProject' from project 'B4iProject')
    cd /Users/administrator/Documents/UploadedProjects/<user id>
    builtin-productPackagingUtility /Users/administrator/Library/MobileDevice/Provisioning\ Profiles/6xxxxxx-xxxxxxxx-xxxxxxxxx-xxxxx.mobileprovision -o /Users/administrator/Documents/UploadedProjects/<user id>/Payload/HttpServer.app/embedded.mobileprovision

WriteAuxiliaryFile /Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/DerivedSources/Entitlements.plist (in target 'B4iProject' from project 'B4iProject')
    cd /Users/administrator/Documents/UploadedProjects/<user id>
    write-file /Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/DerivedSources/Entitlements.plist

ProcessProductPackaging "" /Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/HttpServer.app.xcent (in target 'B4iProject' from project 'B4iProject')
    cd /Users/administrator/Documents/UploadedProjects/<user id>
  

Entitlements:

{
    "application-identifier" = "XXXXXXXXX.xxx.xxxxxxxx.xxxxx";
    "com.apple.developer.team-identifier" = XXXXXXXXX;
    "get-task-allow" = 0;
}


    builtin-productPackagingUtility -entitlements -format xml -o /Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/HttpServer.app.xcent

WriteAuxiliaryFile /Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/all-product-headers.yaml (in target 'B4iProject' from project 'B4iProject')
    cd /Users/administrator/Documents/UploadedProjects/<user id>
    write-file /Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/all-product-headers.yaml

WriteAuxiliaryFile /Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/HttpServer-own-target-headers.hmap (in target 'B4iProject' from project 'B4iProject')
    cd /Users/administrator/Documents/UploadedProjects/<user id>
    write-file /Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/HttpServer-own-target-headers.hmap

WriteAuxiliaryFile /Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/HttpServer.hmap (in target 'B4iProject' from project 'B4iProject')
    cd /Users/administrator/Documents/UploadedProjects/<user id>
    write-file /Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/HttpServer.hmap

WriteAuxiliaryFile /Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/HttpServer-project-headers.hmap (in target 'B4iProject' from project 'B4iProject')
    cd /Users/administrator/Documents/UploadedProjects/<user id>
    write-file /Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/HttpServer-project-headers.hmap

WriteAuxiliaryFile /Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/HttpServer-all-target-headers.hmap (in target 'B4iProject' from project 'B4iProject')
    cd /Users/administrator/Documents/UploadedProjects/<user id>
    write-file /Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/HttpServer-all-target-headers.hmap

WriteAuxiliaryFile /Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/HttpServer-generated-files.hmap (in target 'B4iProject' from project 'B4iProject')
    cd /Users/administrator/Documents/UploadedProjects/<user id>
    write-file /Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/HttpServer-generated-files.hmap

WriteAuxiliaryFile /Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/HttpServer-all-non-framework-target-headers.hmap (in target 'B4iProject' from project 'B4iProject')
    cd /Users/administrator/Documents/UploadedProjects/<user id>
    write-file /Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/HttpServer-all-non-framework-target-headers.hmap

WriteAuxiliaryFile /Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/Objects-normal/arm64/HttpServer.LinkFileList (in target 'B4iProject' from project 'B4iProject')
    cd /Users/administrator/Documents/UploadedProjects/<user id>
    write-file /Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/Objects-normal/arm64/HttpServer.LinkFileList

CompileC /Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/Objects-normal/arm64/LS_page1.o /Users/administrator/Documents/UploadedProjects/<user id>/B4iProject/LS_page1.m normal arm64 objective-c com.apple.compilers.llvm.clang.1_0.compiler (in target 'B4iProject' from project 'B4iProject')
    cd /Users/administrator/Documents/UploadedProjects/<user id>
    export LANG\=en_US.US-ASCII
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -x objective-c -target arm64-apple-ios8.0 -fm-length\=0 -fdiagnostics-show-note-include-stack -fmacro-backtrace-limit\=0 -std\=gnu99 -fobjc-arc -fmodules -gmodules -fmodules-prune-interval\=86400 -fmodules-prune-after\=345600 -fbuild-session-file\=/var/folders/lj/wrbzzxds6b53f88_rx3x7c800000gn/C/org.llvm.clang/ModuleCache.noindex/Session.modulevalidation -fmodules-validate-once-per-build-session -Wnon-modular-include-in-framework-module -Werror\=non-modular-include-in-framework-module -Wno-trigraphs -fpascal-strings -O0 -Wno-missing-field-initializers -Wno-missing-prototypes -Werror\=return-type -Wno-implicit-atomic-properties -Werror\=deprecated-objc-isa-usage -Wno-objc-interface-ivars -Werror\=objc-root-class -Wno-arc-repeated-use-of-weak -Wduplicate-method-match -Wno-missing-braces -Wparentheses -Wswitch -Wunused-function -Wno-unused-label -Wno-unused-parameter -Wunused-variable -Wunused-value -Wempty-body -Wuninitialized -Wconditional-uninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants -Wno-conversion -Wconstant-conversion -Wint-conversion -Wbool-conversion -Wenum-conversion -Wno-float-conversion -Wno-non-literal-null-conversion -Wno-objc-literal-conversion -Wshorten-64-to-32 -Wpointer-sign -Wno-newline-eof -Wno-selector -Wno-strict-selector-match -Wundeclared-selector -Wno-deprecated-implementations -DB4I_VERSION\=13 -DNS_BLOCK_ASSERTIONS\=1 -DOBJC_OLD_DISPATCH_PROTOTYPES\=1 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.3.sdk -fstrict-aliasing -Wprotocol -Wdeprecated-declarations -fvisibility\=hidden -Wno-sign-conversion -Wno-infinite-recursion -Wno-comma -Wno-b-capture-autoreleasing -Wno-strict-prototypes -Wno-semicolon-before-method-body -iquote /Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/HttpServer-generated-files.hmap -I/Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/HttpServer-own-target-headers.hmap -I/Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/HttpServer-all-target-headers.hmap -iquote /Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/HttpServer-project-headers.hmap -I/Users/administrator/Documents/UploadedProjects/<user id>/Payload/include -I/Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/DerivedSources-normal/arm64 -I/Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/DerivedSources/arm64 -I/Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/DerivedSources -F/Users/administrator/Documents/UploadedProjects/<user id>/Payload -F../../Libs -MMD -MT dependencies -MF /Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/Objects-normal/arm64/LS_page1.d --serialize-diagnostics /Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/Objects-normal/arm64/LS_page1.dia -c /Users/administrator/Documents/UploadedProjects/<user id>/B4iProject/LS_page1.m -o /Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/Objects-normal/arm64/LS_page1.o

CompileC /Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/Objects-normal/arm64/b4i_main.o /Users/administrator/Documents/UploadedProjects/<user id>/B4iProject/b4i_main.m normal arm64 objective-c com.apple.compilers.llvm.clang.1_0.compiler (in target 'B4iProject' from project 'B4iProject')
    cd /Users/administrator/Documents/UploadedProjects/<user id>
    export LANG\=en_US.US-ASCII
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -x objective-c -target arm64-apple-ios8.0 -fm-length\=0 -fdiagnostics-show-note-include-stack -fmacro-backtrace-limit\=0 -std\=gnu99 -fobjc-arc -fmodules -gmodules -fmodules-prune-interval\=86400 -fmodules-prune-after\=345600 -fbuild-session-file\=/var/folders/lj/wrbzzxds6b53f88_rx3x7c800000gn/C/org.llvm.clang/ModuleCache.noindex/Session.modulevalidation -fmodules-validate-once-per-build-session -Wnon-modular-include-in-framework-module -Werror\=non-modular-include-in-framework-module -Wno-trigraphs -fpascal-strings -O0 -Wno-missing-field-initializers -Wno-missing-prototypes -Werror\=return-type -Wno-implicit-atomic-properties -Werror\=deprecated-objc-isa-usage -Wno-objc-interface-ivars -Werror\=objc-root-class -Wno-arc-repeated-use-of-weak -Wduplicate-method-match -Wno-missing-braces -Wparentheses -Wswitch -Wunused-function -Wno-unused-label -Wno-unused-parameter -Wunused-variable -Wunused-value -Wempty-body -Wuninitialized -Wconditional-uninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants -Wno-conversion -Wconstant-conversion -Wint-conversion -Wbool-conversion -Wenum-conversion -Wno-float-conversion -Wno-non-literal-null-conversion -Wno-objc-literal-conversion -Wshorten-64-to-32 -Wpointer-sign -Wno-newline-eof -Wno-selector -Wno-strict-selector-match -Wundeclared-selector -Wno-deprecated-implementations -DB4I_VERSION\=13 -DNS_BLOCK_ASSERTIONS\=1 -DOBJC_OLD_DISPATCH_PROTOTYPES\=1 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.3.sdk -fstrict-aliasing -Wprotocol -Wdeprecated-declarations -fvisibility\=hidden -Wno-sign-conversion -Wno-infinite-recursion -Wno-comma -Wno-b-capture-autoreleasing -Wno-strict-prototypes -Wno-semicolon-before-method-body -iquote /Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/HttpServer-generated-files.hmap -I/Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/HttpServer-own-target-headers.hmap -I/Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/HttpServer-all-target-headers.hmap -iquote /Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/HttpServer-project-headers.hmap -I/Users/administrator/Documents/UploadedProjects/<user id>/Payload/include -I/Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/DerivedSources-normal/arm64 -I/Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/DerivedSources/arm64 -I/Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/DerivedSources -F/Users/administrator/Documents/UploadedProjects/<user id>/Payload -F../../Libs -MMD -MT dependencies -MF /Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/Objects-normal/arm64/b4i_main.d --serialize-diagnostics /Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/Objects-normal/arm64/b4i_main.dia -c /Users/administrator/Documents/UploadedProjects/<user id>/B4iProject/b4i_main.m -o /Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/Objects-normal/arm64/b4i_main.o
In file included from /Users/administrator/Documents/UploadedProjects/<user id>/B4iProject/b4i_main.m:2:
/Users/administrator/Documents/UploadedProjects/<user id>/B4iProject/b4i_main.h:20:9: error: unknown type name 'b4i_httpserver'; did you mean 'b4i_server'?
@public b4i_httpserver* __svr;
        ^~~~~~~~~~~~~~
        b4i_server
In file included from /Users/administrator/Documents/UploadedProjects/<user id>/B4iProject/b4i_main.m:2:
In file included from /Users/administrator/Documents/UploadedProjects/<user id>/B4iProject/b4i_main.h:4:
/Users/administrator/Documents/Libs/iHttpServer.h:79:8: note: 'b4i_server' declared here
@class b4i_server;
       ^
In file included from /Users/administrator/Documents/UploadedProjects/<user id>/B4iProject/b4i_main.m:2:
/Users/administrator/Documents/UploadedProjects/<user id>/B4iProject/b4i_main.h:35:22: error: unknown type name 'b4i_httpserver'; did you mean 'b4i_server'?
@property (nonatomic)b4i_httpserver* _svr;
                     ^~~~~~~~~~~~~~
                     b4i_server
In file included from /Users/administrator/Documents/UploadedProjects/<user id>/B4iProject/b4i_main.m:2:
In file included from /Users/administrator/Documents/UploadedProjects/<user id>/B4iProject/b4i_main.h:4:
/Users/administrator/Documents/Libs/iHttpServer.h:79:8: note: 'b4i_server' declared here
@class b4i_server;
       ^
/Users/administrator/Documents/UploadedProjects/<user id>/B4iProject/b4i_main.m:127:16: error: unknown receiver 'b4i_httpserver'; did you mean 'b4i_server'?
self->__svr = [b4i_httpserver new];
               ^~~~~~~~~~~~~~
               b4i_server
In file included from /Users/administrator/Documents/UploadedProjects/<user id>/B4iProject/b4i_main.m:2:
In file included from /Users/administrator/Documents/UploadedProjects/<user id>/B4iProject/b4i_main.h:4:
/Users/administrator/Documents/Libs/iHttpServer.h:79:8: note: 'b4i_server' declared here
@class b4i_server;
       ^
/Users/administrator/Documents/UploadedProjects/<user id>/B4iProject/b4i_main.m:164:8: error: no visible @interface for 'b4i_servletresponse' declares the selector '_sendfile::'
[_resp _sendfile:[[self->___c File] DirTemp] :_fn];
~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/administrator/Documents/UploadedProjects/<user id>/B4iProject/b4i_main.m:172:8: error: no visible @interface for 'b4i_servletresponse' declares the selector '_sendnotfound:'
[_resp _sendnotfound:_fn];
~~~~~ ^~~~~~~~~~~~~
/Users/administrator/Documents/UploadedProjects/<user id>/B4iProject/b4i_main.m:178:12: error: 'b4i_servletrequest' does not have a member named '__contenttype'
if ([_req->__contenttype isEqual:@"multipart/form-data"]) {
     ~~~~  ^
/Users/administrator/Documents/UploadedProjects/<user id>/B4iProject/b4i_main.m:181:12: error: 'b4i_servletrequest' does not have a member named '__multipartfilename'
if ([_req->__multipartfilename Size]>0) {
     ~~~~  ^
/Users/administrator/Documents/UploadedProjects/<user id>/B4iProject/b4i_main.m:185:40: error: 'b4i_servletrequest' does not have a member named '__multipartfilename'
const id<B4IIterable> group16 = [_req->__multipartfilename Keys];
                                 ~~~~  ^
/Users/administrator/Documents/UploadedProjects/<user id>/B4iProject/b4i_main.m:217:8: error: no visible @interface for 'b4i_servletresponse' declares the selector '_sendstring:'
[_resp _sendstring:[@[_field,(@"<B>Recorded data</B><BR><a href=\"/index.html\">Back</a>")] componentsJoinedByString:@""]];
~~~~~ ^~~~~~~~~~~
/Users/administrator/Documents/UploadedProjects/<user id>/B4iProject/b4i_main.m:240:7: error: 'b4i_servletrequest' does not have a member named '__id'
_req->__id = [self.bi NumberToString:@(self->__counterconenction)];
~~~~  ^
/Users/administrator/Documents/UploadedProjects/<user id>/B4iProject/b4i_main.m:262:12: error: 'b4i_servletrequest' does not have a member named '__multipartfilename'
if ([_req->__multipartfilename Size]>0) {
     ~~~~  ^
/Users/administrator/Documents/UploadedProjects/<user id>/B4iProject/b4i_main.m:266:39: error: 'b4i_servletrequest' does not have a member named '__multipartfilename'
const id<B4IIterable> group4 = [_req->__multipartfilename Keys];
                                ~~~~  ^
/Users/administrator/Documents/UploadedProjects/<user id>/B4iProject/b4i_main.m:274:48: error: 'b4i_servletrequest' does not have a member named '__multipartfilename'
_tempfilename = [self.bi ObjectToString:[_req->__multipartfilename Get:(NSObject*)(_filename)]];
                                         ~~~~  ^
/Users/administrator/Documents/UploadedProjects/<user id>/B4iProject/b4i_main.m:292:8: error: no visible @interface for 'b4i_servletresponse' declares the selector '_sendstring:'
[_resp _sendstring:([@[@"<!DOCTYPE html>\n",@"<html lang=\"en\" dir=\"ltr\">\n",@"\n",@"<head>\n",@"  <meta charset=\"utf-8\">\n",@"  <title>UPload</title>\n",@"</head>\n",@"\n",@"<body id=\"body\">\n",@"<B>Download: ",[self->___c SmartStringFormatter:@"" :(NSObject*)(_filename)],@"</B><BR>\n",@"<img src=\"",[self->___c SmartStringFormatter:@"" :(NSObject*)(_tempfilename)],@"\"><BR>\n",@"<a href=\"/fileupload.html\">Back To Upload</a><BR>\n",@"<a href=\"/index.html\">Back To Home</a>\n",@"</body>\n",@"</html>"] componentsJoinedByString:@""])];
~~~~~ ^~~~~~~~~~~
/Users/administrator/Documents/UploadedProjects/<user id>/B4iProject/b4i_main.m:299:8: error: no visible @interface for 'b4i_servletresponse' declares the selector '_sendstring:'
[_resp _sendstring:([@[@"<!DOCTYPE html>\n",@"<html lang=\"en\" dir=\"ltr\">\n",@"\n",@"<head>\n",@"  <meta charset=\"utf-8\">\n",@"  <title>UPload</title>\n",@"</head>\n",@"\n",@"<body id=\"body\">\n",@"<B>Download: ",[self->___c SmartStringFormatter:@"" :(NSObject*)(_filename)],@"</B><BR>\n",@"<a href=\"/fileupload.html\">Back to Upload</a><BR>\n",@"<a href=\"/index.html\">Back to Home</a>\n",@"</body>\n",@"</html>"] componentsJoinedByString:@""])];
~~~~~ ^~~~~~~~~~~
15 errors generated.

CompileC /Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/Objects-normal/arm64/main.o /Users/administrator/Documents/UploadedProjects/<user id>/B4iProject/main.m normal arm64 objective-c com.apple.compilers.llvm.clang.1_0.compiler (in target 'B4iProject' from project 'B4iProject')
    cd /Users/administrator/Documents/UploadedProjects/<user id>
    export LANG\=en_US.US-ASCII
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -x objective-c -target arm64-apple-ios8.0 -fm-length\=0 -fdiagnostics-show-note-include-stack -fmacro-backtrace-limit\=0 -std\=gnu99 -fobjc-arc -fmodules -gmodules -fmodules-prune-interval\=86400 -fmodules-prune-after\=345600 -fbuild-session-file\=/var/folders/lj/wrbzzxds6b53f88_rx3x7c800000gn/C/org.llvm.clang/ModuleCache.noindex/Session.modulevalidation -fmodules-validate-once-per-build-session -Wnon-modular-include-in-framework-module -Werror\=non-modular-include-in-framework-module -Wno-trigraphs -fpascal-strings -O0 -Wno-missing-field-initializers -Wno-missing-prototypes -Werror\=return-type -Wno-implicit-atomic-properties -Werror\=deprecated-objc-isa-usage -Wno-objc-interface-ivars -Werror\=objc-root-class -Wno-arc-repeated-use-of-weak -Wduplicate-method-match -Wno-missing-braces -Wparentheses -Wswitch -Wunused-function -Wno-unused-label -Wno-unused-parameter -Wunused-variable -Wunused-value -Wempty-body -Wuninitialized -Wconditional-uninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants -Wno-conversion -Wconstant-conversion -Wint-conversion -Wbool-conversion -Wenum-conversion -Wno-float-conversion -Wno-non-literal-null-conversion -Wno-objc-literal-conversion -Wshorten-64-to-32 -Wpointer-sign -Wno-newline-eof -Wno-selector -Wno-strict-selector-match -Wundeclared-selector -Wno-deprecated-implementations -DB4I_VERSION\=13 -DNS_BLOCK_ASSERTIONS\=1 -DOBJC_OLD_DISPATCH_PROTOTYPES\=1 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.3.sdk -fstrict-aliasing -Wprotocol -Wdeprecated-declarations -fvisibility\=hidden -Wno-sign-conversion -Wno-infinite-recursion -Wno-comma -Wno-b-capture-autoreleasing -Wno-strict-prototypes -Wno-semicolon-before-method-body -iquote /Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/HttpServer-generated-files.hmap -I/Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/HttpServer-own-target-headers.hmap -I/Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/HttpServer-all-target-headers.hmap -iquote /Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/HttpServer-project-headers.hmap -I/Users/administrator/Documents/UploadedProjects/<user id>/Payload/include -I/Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/DerivedSources-normal/arm64 -I/Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/DerivedSources/arm64 -I/Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/DerivedSources -F/Users/administrator/Documents/UploadedProjects/<user id>/Payload -F../../Libs -MMD -MT dependencies -MF /Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/Objects-normal/arm64/main.d --serialize-diagnostics /Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/Objects-normal/arm64/main.dia -c /Users/administrator/Documents/UploadedProjects/<user id>/B4iProject/main.m -o /Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/Objects-normal/arm64/main.o


Error: ** BUILD FAILED **


The following build commands failed:
    CompileC /Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/Objects-normal/arm64/b4i_main.o /Users/administrator/Documents/UploadedProjects/<user id>/B4iProject/b4i_main.m normal arm64 objective-c com.apple.compilers.llvm.clang.1_0.compiler
(1 failure)

 

Star-Dust

Expert
Licensed User
Longtime User
I still don't have an explanation for your problem. As I have already told you I cannot replicate your mistake. As soon as I have an answer I will be eager to help you. Do not repeat the question further, it is not necessary, I do not forget your problem
 

Star-Dust

Expert
Licensed User
Longtime User
I had other friends on the forum compile the examples and they didn't find your problem.

Evidently it is related to something you are wrong. Check that the problem is not related to the certificate and profile. Unzip the library files with a good decompressor and copy it to the Additional Libraries folder.
 
Last edited:

ilan

Expert
Licensed User
Longtime User

are you using a Local Mac or the Hosted Mac from Anywhere Software?

Have you changed the Provisions file/certificate and package name?
 

Star-Dust

Expert
Licensed User
Longtime User
He use hosted Mac server

 

ilan

Expert
Licensed User
Longtime User

and has Erel updated the Hosted Mac with your latest version?
 

ilan

Expert
Licensed User
Longtime User
what phone does he use when he compile? what ios version?
can he compile other apps?
 

Star-Dust

Expert
Licensed User
Longtime User
Donations are welcome for this library which has required considerable work
 
Last edited:

OliverA

Expert
Licensed User
Longtime User
Maybe it's just me, but I could not extract the
iHttpServer 0.73.zip
file using Windows 10's build in unzip function. Had to use 7Zip. I do not encounter the same issue with the the B4J or B4A library extraction.
 
Cookies are required to use this site. You must accept them to continue using the site. Learn more…