Skip to content

Latest commit

History

118 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

iPhone Web Services Consumption Comparison

Introduction

This project showcases different transport formats and libraries to consume web services from an iPhone application. It features a server application, a command-line script that saves the output of the server application in different formats, and an iPhone client application (compatible with iPhone OS 3.0 and higher).

The server application (written in PHP) reads a MySQL database (Server/data/schema.sql) and outputs data in the following formats:

  • HTML
  • JSON
  • YAML
  • XML (arbitrary format)
  • SOAP
  • Property list
    • Binary property list
    • XML property list
  • CSV
  • Protocol Buffer (Google)

For each output format, there is a single “Formatter” subclass in the Server/formatters folder. A static method in the FormatterFactory class returns the formatter that corresponds to the requested output format.

Future Extensions

In future versions of this project, the following formats and libraries could be integrated:

Libraries Used

The project uses several different libraries:

For the server:

  • cfpropertylist – A PHP Implementation Of Apple’s plist (PropertyList).
  • NuSOAPSOAP Toolkit for PHP.
  • spyc – A simple YAML loader/dumper class for PHP.
  • pb4php – Protocol Buffer for PHP

For the iPhone client:

  • AFNetworking – a very fast, NSOperation-based networking library
  • NextiveJSON – a very fast JSON parsing library
  • ASIHTTPRequest – wrapper around the CFNetwork API, no longer maintained
  • json-framework – A strict JSON parser/generator for Objective-C.
  • JSONKit – A Very High Performance Objective-C JSON Library.
  • YAJL-objc – Objective-C bindings for the YAJL parser.
  • BSJSON – A simple JSON parser in Objective-C.
  • touchcode – Repository of iPhone and iPod Touch source code.
  • cCSVParse – A CSV parsing library in Objective-C.
  • TBXML V1.3XML Parser by Tom Bradley.
  • KissXML – KissXML is a replacement for Cocoa’s NSXML cluster of classes. It is based on libxml.
  • TinyXML – TinyXML is a simple, small, C++ XML parser that can be easily integrating into other programs.
  • gdata-objectivec-clientXML support classes included in the Google Data APIs Objective-C Client Library.
  • APXML – NSXMLDocument ’substitute’ for iPhone/iPod Touch.
  • ProtocolBuffers – Objective-C Protocol Buffers for OSX and the iPhone.
  • AQXMLParser – Another parser for XML in Objective-C.
  • InAppSettingsKit – Library allowing to access the current setting bundle from the application.

YAML in Cocoa

For parsing YAML in Cocoa, the code in this page was adapted, removing dependencies on the Cocoa AppKit framework (not available on the iPhone).

If you want to compile the YAML::Syck library with Fink, follow these steps:

  1. Install Fink on Mac OS X 10.6 from source following these instructions (there is no binary installer available for Snow Leopard at the time of this writing).
  2. Type “/sw/bin/fink install syck” to install syck.
  3. The Xcode project should now compile without problems.

To avoid these steps above, this project includes a version of libsyck.a already compiled as a “fat binary” format for both ARM (iPhone OS) and Intel (Simulator) processors.

SOAP in Cocoa

The wsdl2objc tool was used to generate Objective-C (Cocoa) code from the server’s WSDL. This code was later adapted to parse the array returned by the server.

Installation

  1. Set up the server:
    1. Upload the “Server” folder contents via FTP or other means.
    2. Create a MySQL database.
    3. Import the “Server/data/schema.sql” file into the database. This will create a “data” table in the database.
    4. Change the settings in the “Server/data/database.php” file to access the database (server, username, password).
  2. Set up the client:
    1. Open the “Client/Client.xcodeproj” project in Xcode.
    2. Compile the project.
    3. Execute the client, which will connect to your server and retrieve data.
    4. If required, change the URL of the remote data tapping the “Settings” button in the interface.

Other Links

The application icon and splash screen have been adapted from this picture.

License

This project is released with a liberal BSD license. See the LICENSE file for details.

About

This project showcases different transport formats and libraries to consume web services from an iOS application.

Resources

Stars

0 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - tabko/iPhoneWebServicesClient: This project showcases different transport formats and libraries to consume web services from an iOS application. · GitHub
Skip to content

Latest commit

History

118 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

iPhone Web Services Consumption Comparison

Introduction

This project showcases different transport formats and libraries to consume web services from an iPhone application. It features a server application, a command-line script that saves the output of the server application in different formats, and an iPhone client application (compatible with iPhone OS 3.0 and higher).

The server application (written in PHP) reads a MySQL database (Server/data/schema.sql) and outputs data in the following formats:

  • HTML
  • JSON
  • YAML
  • XML (arbitrary format)
  • SOAP
  • Property list
    • Binary property list
    • XML property list
  • CSV
  • Protocol Buffer (Google)

For each output format, there is a single “Formatter” subclass in the Server/formatters folder. A static method in the FormatterFactory class returns the formatter that corresponds to the requested output format.

Future Extensions

In future versions of this project, the following formats and libraries could be integrated:

Libraries Used

The project uses several different libraries:

For the server:

  • cfpropertylist – A PHP Implementation Of Apple’s plist (PropertyList).
  • NuSOAPSOAP Toolkit for PHP.
  • spyc – A simple YAML loader/dumper class for PHP.
  • pb4php – Protocol Buffer for PHP

For the iPhone client:

  • AFNetworking – a very fast, NSOperation-based networking library
  • NextiveJSON – a very fast JSON parsing library
  • ASIHTTPRequest – wrapper around the CFNetwork API, no longer maintained
  • json-framework – A strict JSON parser/generator for Objective-C.
  • JSONKit – A Very High Performance Objective-C JSON Library.
  • YAJL-objc – Objective-C bindings for the YAJL parser.
  • BSJSON – A simple JSON parser in Objective-C.
  • touchcode – Repository of iPhone and iPod Touch source code.
  • cCSVParse – A CSV parsing library in Objective-C.
  • TBXML V1.3XML Parser by Tom Bradley.
  • KissXML – KissXML is a replacement for Cocoa’s NSXML cluster of classes. It is based on libxml.
  • TinyXML – TinyXML is a simple, small, C++ XML parser that can be easily integrating into other programs.
  • gdata-objectivec-clientXML support classes included in the Google Data APIs Objective-C Client Library.
  • APXML – NSXMLDocument ’substitute’ for iPhone/iPod Touch.
  • ProtocolBuffers – Objective-C Protocol Buffers for OSX and the iPhone.
  • AQXMLParser – Another parser for XML in Objective-C.
  • InAppSettingsKit – Library allowing to access the current setting bundle from the application.

YAML in Cocoa

For parsing YAML in Cocoa, the code in this page was adapted, removing dependencies on the Cocoa AppKit framework (not available on the iPhone).

If you want to compile the YAML::Syck library with Fink, follow these steps:

  1. Install Fink on Mac OS X 10.6 from source following these instructions (there is no binary installer available for Snow Leopard at the time of this writing).
  2. Type “/sw/bin/fink install syck” to install syck.
  3. The Xcode project should now compile without problems.

To avoid these steps above, this project includes a version of libsyck.a already compiled as a “fat binary” format for both ARM (iPhone OS) and Intel (Simulator) processors.

SOAP in Cocoa

The wsdl2objc tool was used to generate Objective-C (Cocoa) code from the server’s WSDL. This code was later adapted to parse the array returned by the server.

Installation

  1. Set up the server:
    1. Upload the “Server” folder contents via FTP or other means.
    2. Create a MySQL database.
    3. Import the “Server/data/schema.sql” file into the database. This will create a “data” table in the database.
    4. Change the settings in the “Server/data/database.php” file to access the database (server, username, password).
  2. Set up the client:
    1. Open the “Client/Client.xcodeproj” project in Xcode.
    2. Compile the project.
    3. Execute the client, which will connect to your server and retrieve data.
    4. If required, change the URL of the remote data tapping the “Settings” button in the interface.

Other Links

The application icon and splash screen have been adapted from this picture.

License

This project is released with a liberal BSD license. See the LICENSE file for details.

About

This project showcases different transport formats and libraries to consume web services from an iOS application.

Resources

Stars

0 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - tabko/iPhoneWebServicesClient: This project showcases different transport formats and libraries to consume web services from an iOS application. · GitHub
Skip to content

Latest commit

History

118 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

iPhone Web Services Consumption Comparison

Introduction

This project showcases different transport formats and libraries to consume web services from an iPhone application. It features a server application, a command-line script that saves the output of the server application in different formats, and an iPhone client application (compatible with iPhone OS 3.0 and higher).

The server application (written in PHP) reads a MySQL database (Server/data/schema.sql) and outputs data in the following formats:

  • HTML
  • JSON
  • YAML
  • XML (arbitrary format)
  • SOAP
  • Property list
    • Binary property list
    • XML property list
  • CSV
  • Protocol Buffer (Google)

For each output format, there is a single “Formatter” subclass in the Server/formatters folder. A static method in the FormatterFactory class returns the formatter that corresponds to the requested output format.

Future Extensions

In future versions of this project, the following formats and libraries could be integrated:

Libraries Used

The project uses several different libraries:

For the server:

  • cfpropertylist – A PHP Implementation Of Apple’s plist (PropertyList).
  • NuSOAPSOAP Toolkit for PHP.
  • spyc – A simple YAML loader/dumper class for PHP.
  • pb4php – Protocol Buffer for PHP

For the iPhone client:

  • AFNetworking – a very fast, NSOperation-based networking library
  • NextiveJSON – a very fast JSON parsing library
  • ASIHTTPRequest – wrapper around the CFNetwork API, no longer maintained
  • json-framework – A strict JSON parser/generator for Objective-C.
  • JSONKit – A Very High Performance Objective-C JSON Library.
  • YAJL-objc – Objective-C bindings for the YAJL parser.
  • BSJSON – A simple JSON parser in Objective-C.
  • touchcode – Repository of iPhone and iPod Touch source code.
  • cCSVParse – A CSV parsing library in Objective-C.
  • TBXML V1.3XML Parser by Tom Bradley.
  • KissXML – KissXML is a replacement for Cocoa’s NSXML cluster of classes. It is based on libxml.
  • TinyXML – TinyXML is a simple, small, C++ XML parser that can be easily integrating into other programs.
  • gdata-objectivec-clientXML support classes included in the Google Data APIs Objective-C Client Library.
  • APXML – NSXMLDocument ’substitute’ for iPhone/iPod Touch.
  • ProtocolBuffers – Objective-C Protocol Buffers for OSX and the iPhone.
  • AQXMLParser – Another parser for XML in Objective-C.
  • InAppSettingsKit – Library allowing to access the current setting bundle from the application.

YAML in Cocoa

For parsing YAML in Cocoa, the code in this page was adapted, removing dependencies on the Cocoa AppKit framework (not available on the iPhone).

If you want to compile the YAML::Syck library with Fink, follow these steps:

  1. Install Fink on Mac OS X 10.6 from source following these instructions (there is no binary installer available for Snow Leopard at the time of this writing).
  2. Type “/sw/bin/fink install syck” to install syck.
  3. The Xcode project should now compile without problems.

To avoid these steps above, this project includes a version of libsyck.a already compiled as a “fat binary” format for both ARM (iPhone OS) and Intel (Simulator) processors.

SOAP in Cocoa

The wsdl2objc tool was used to generate Objective-C (Cocoa) code from the server’s WSDL. This code was later adapted to parse the array returned by the server.

Installation

  1. Set up the server:
    1. Upload the “Server” folder contents via FTP or other means.
    2. Create a MySQL database.
    3. Import the “Server/data/schema.sql” file into the database. This will create a “data” table in the database.
    4. Change the settings in the “Server/data/database.php” file to access the database (server, username, password).
  2. Set up the client:
    1. Open the “Client/Client.xcodeproj” project in Xcode.
    2. Compile the project.
    3. Execute the client, which will connect to your server and retrieve data.
    4. If required, change the URL of the remote data tapping the “Settings” button in the interface.

Other Links

The application icon and splash screen have been adapted from this picture.

License

This project is released with a liberal BSD license. See the LICENSE file for details.

About

This project showcases different transport formats and libraries to consume web services from an iOS application.

Resources

Stars

0 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - tabko/iPhoneWebServicesClient: This project showcases different transport formats and libraries to consume web services from an iOS application. · GitHub
Skip to content

Latest commit

History

118 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

iPhone Web Services Consumption Comparison

Introduction

This project showcases different transport formats and libraries to consume web services from an iPhone application. It features a server application, a command-line script that saves the output of the server application in different formats, and an iPhone client application (compatible with iPhone OS 3.0 and higher).

The server application (written in PHP) reads a MySQL database (Server/data/schema.sql) and outputs data in the following formats:

  • HTML
  • JSON
  • YAML
  • XML (arbitrary format)
  • SOAP
  • Property list
    • Binary property list
    • XML property list
  • CSV
  • Protocol Buffer (Google)

For each output format, there is a single “Formatter” subclass in the Server/formatters folder. A static method in the FormatterFactory class returns the formatter that corresponds to the requested output format.

Future Extensions

In future versions of this project, the following formats and libraries could be integrated:

Libraries Used

The project uses several different libraries:

For the server:

  • cfpropertylist – A PHP Implementation Of Apple’s plist (PropertyList).
  • NuSOAPSOAP Toolkit for PHP.
  • spyc – A simple YAML loader/dumper class for PHP.
  • pb4php – Protocol Buffer for PHP

For the iPhone client:

  • AFNetworking – a very fast, NSOperation-based networking library
  • NextiveJSON – a very fast JSON parsing library
  • ASIHTTPRequest – wrapper around the CFNetwork API, no longer maintained
  • json-framework – A strict JSON parser/generator for Objective-C.
  • JSONKit – A Very High Performance Objective-C JSON Library.
  • YAJL-objc – Objective-C bindings for the YAJL parser.
  • BSJSON – A simple JSON parser in Objective-C.
  • touchcode – Repository of iPhone and iPod Touch source code.
  • cCSVParse – A CSV parsing library in Objective-C.
  • TBXML V1.3XML Parser by Tom Bradley.
  • KissXML – KissXML is a replacement for Cocoa’s NSXML cluster of classes. It is based on libxml.
  • TinyXML – TinyXML is a simple, small, C++ XML parser that can be easily integrating into other programs.
  • gdata-objectivec-clientXML support classes included in the Google Data APIs Objective-C Client Library.
  • APXML – NSXMLDocument ’substitute’ for iPhone/iPod Touch.
  • ProtocolBuffers – Objective-C Protocol Buffers for OSX and the iPhone.
  • AQXMLParser – Another parser for XML in Objective-C.
  • InAppSettingsKit – Library allowing to access the current setting bundle from the application.

YAML in Cocoa

For parsing YAML in Cocoa, the code in this page was adapted, removing dependencies on the Cocoa AppKit framework (not available on the iPhone).

If you want to compile the YAML::Syck library with Fink, follow these steps:

  1. Install Fink on Mac OS X 10.6 from source following these instructions (there is no binary installer available for Snow Leopard at the time of this writing).
  2. Type “/sw/bin/fink install syck” to install syck.
  3. The Xcode project should now compile without problems.

To avoid these steps above, this project includes a version of libsyck.a already compiled as a “fat binary” format for both ARM (iPhone OS) and Intel (Simulator) processors.

SOAP in Cocoa

The wsdl2objc tool was used to generate Objective-C (Cocoa) code from the server’s WSDL. This code was later adapted to parse the array returned by the server.

Installation

  1. Set up the server:
    1. Upload the “Server” folder contents via FTP or other means.
    2. Create a MySQL database.
    3. Import the “Server/data/schema.sql” file into the database. This will create a “data” table in the database.
    4. Change the settings in the “Server/data/database.php” file to access the database (server, username, password).
  2. Set up the client:
    1. Open the “Client/Client.xcodeproj” project in Xcode.
    2. Compile the project.
    3. Execute the client, which will connect to your server and retrieve data.
    4. If required, change the URL of the remote data tapping the “Settings” button in the interface.

Other Links

The application icon and splash screen have been adapted from this picture.

License

This project is released with a liberal BSD license. See the LICENSE file for details.

About

This project showcases different transport formats and libraries to consume web services from an iOS application.

Resources

Stars

0 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - tabko/iPhoneWebServicesClient: This project showcases different transport formats and libraries to consume web services from an iOS application. · GitHub
Skip to content

Latest commit

History

118 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

iPhone Web Services Consumption Comparison

Introduction

This project showcases different transport formats and libraries to consume web services from an iPhone application. It features a server application, a command-line script that saves the output of the server application in different formats, and an iPhone client application (compatible with iPhone OS 3.0 and higher).

The server application (written in PHP) reads a MySQL database (Server/data/schema.sql) and outputs data in the following formats:

  • HTML
  • JSON
  • YAML
  • XML (arbitrary format)
  • SOAP
  • Property list
    • Binary property list
    • XML property list
  • CSV
  • Protocol Buffer (Google)

For each output format, there is a single “Formatter” subclass in the Server/formatters folder. A static method in the FormatterFactory class returns the formatter that corresponds to the requested output format.

Future Extensions

In future versions of this project, the following formats and libraries could be integrated:

Libraries Used

The project uses several different libraries:

For the server:

  • cfpropertylist – A PHP Implementation Of Apple’s plist (PropertyList).
  • NuSOAPSOAP Toolkit for PHP.
  • spyc – A simple YAML loader/dumper class for PHP.
  • pb4php – Protocol Buffer for PHP

For the iPhone client:

  • AFNetworking – a very fast, NSOperation-based networking library
  • NextiveJSON – a very fast JSON parsing library
  • ASIHTTPRequest – wrapper around the CFNetwork API, no longer maintained
  • json-framework – A strict JSON parser/generator for Objective-C.
  • JSONKit – A Very High Performance Objective-C JSON Library.
  • YAJL-objc – Objective-C bindings for the YAJL parser.
  • BSJSON – A simple JSON parser in Objective-C.
  • touchcode – Repository of iPhone and iPod Touch source code.
  • cCSVParse – A CSV parsing library in Objective-C.
  • TBXML V1.3XML Parser by Tom Bradley.
  • KissXML – KissXML is a replacement for Cocoa’s NSXML cluster of classes. It is based on libxml.
  • TinyXML – TinyXML is a simple, small, C++ XML parser that can be easily integrating into other programs.
  • gdata-objectivec-clientXML support classes included in the Google Data APIs Objective-C Client Library.
  • APXML – NSXMLDocument ’substitute’ for iPhone/iPod Touch.
  • ProtocolBuffers – Objective-C Protocol Buffers for OSX and the iPhone.
  • AQXMLParser – Another parser for XML in Objective-C.
  • InAppSettingsKit – Library allowing to access the current setting bundle from the application.

YAML in Cocoa

For parsing YAML in Cocoa, the code in this page was adapted, removing dependencies on the Cocoa AppKit framework (not available on the iPhone).

If you want to compile the YAML::Syck library with Fink, follow these steps:

  1. Install Fink on Mac OS X 10.6 from source following these instructions (there is no binary installer available for Snow Leopard at the time of this writing).
  2. Type “/sw/bin/fink install syck” to install syck.
  3. The Xcode project should now compile without problems.

To avoid these steps above, this project includes a version of libsyck.a already compiled as a “fat binary” format for both ARM (iPhone OS) and Intel (Simulator) processors.

SOAP in Cocoa

The wsdl2objc tool was used to generate Objective-C (Cocoa) code from the server’s WSDL. This code was later adapted to parse the array returned by the server.

Installation

  1. Set up the server:
    1. Upload the “Server” folder contents via FTP or other means.
    2. Create a MySQL database.
    3. Import the “Server/data/schema.sql” file into the database. This will create a “data” table in the database.
    4. Change the settings in the “Server/data/database.php” file to access the database (server, username, password).
  2. Set up the client:
    1. Open the “Client/Client.xcodeproj” project in Xcode.
    2. Compile the project.
    3. Execute the client, which will connect to your server and retrieve data.
    4. If required, change the URL of the remote data tapping the “Settings” button in the interface.

Other Links

The application icon and splash screen have been adapted from this picture.

License

This project is released with a liberal BSD license. See the LICENSE file for details.

About

This project showcases different transport formats and libraries to consume web services from an iOS application.

Resources

Stars

0 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - tabko/iPhoneWebServicesClient: This project showcases different transport formats and libraries to consume web services from an iOS application. · GitHub
Skip to content

Latest commit

History

118 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

iPhone Web Services Consumption Comparison

Introduction

This project showcases different transport formats and libraries to consume web services from an iPhone application. It features a server application, a command-line script that saves the output of the server application in different formats, and an iPhone client application (compatible with iPhone OS 3.0 and higher).

The server application (written in PHP) reads a MySQL database (Server/data/schema.sql) and outputs data in the following formats:

  • HTML
  • JSON
  • YAML
  • XML (arbitrary format)
  • SOAP
  • Property list
    • Binary property list
    • XML property list
  • CSV
  • Protocol Buffer (Google)

For each output format, there is a single “Formatter” subclass in the Server/formatters folder. A static method in the FormatterFactory class returns the formatter that corresponds to the requested output format.

Future Extensions

In future versions of this project, the following formats and libraries could be integrated:

Libraries Used

The project uses several different libraries:

For the server:

  • cfpropertylist – A PHP Implementation Of Apple’s plist (PropertyList).
  • NuSOAPSOAP Toolkit for PHP.
  • spyc – A simple YAML loader/dumper class for PHP.
  • pb4php – Protocol Buffer for PHP

For the iPhone client:

  • AFNetworking – a very fast, NSOperation-based networking library
  • NextiveJSON – a very fast JSON parsing library
  • ASIHTTPRequest – wrapper around the CFNetwork API, no longer maintained
  • json-framework – A strict JSON parser/generator for Objective-C.
  • JSONKit – A Very High Performance Objective-C JSON Library.
  • YAJL-objc – Objective-C bindings for the YAJL parser.
  • BSJSON – A simple JSON parser in Objective-C.
  • touchcode – Repository of iPhone and iPod Touch source code.
  • cCSVParse – A CSV parsing library in Objective-C.
  • TBXML V1.3XML Parser by Tom Bradley.
  • KissXML – KissXML is a replacement for Cocoa’s NSXML cluster of classes. It is based on libxml.
  • TinyXML – TinyXML is a simple, small, C++ XML parser that can be easily integrating into other programs.
  • gdata-objectivec-clientXML support classes included in the Google Data APIs Objective-C Client Library.
  • APXML – NSXMLDocument ’substitute’ for iPhone/iPod Touch.
  • ProtocolBuffers – Objective-C Protocol Buffers for OSX and the iPhone.
  • AQXMLParser – Another parser for XML in Objective-C.
  • InAppSettingsKit – Library allowing to access the current setting bundle from the application.

YAML in Cocoa

For parsing YAML in Cocoa, the code in this page was adapted, removing dependencies on the Cocoa AppKit framework (not available on the iPhone).

If you want to compile the YAML::Syck library with Fink, follow these steps:

  1. Install Fink on Mac OS X 10.6 from source following these instructions (there is no binary installer available for Snow Leopard at the time of this writing).
  2. Type “/sw/bin/fink install syck” to install syck.
  3. The Xcode project should now compile without problems.

To avoid these steps above, this project includes a version of libsyck.a already compiled as a “fat binary” format for both ARM (iPhone OS) and Intel (Simulator) processors.

SOAP in Cocoa

The wsdl2objc tool was used to generate Objective-C (Cocoa) code from the server’s WSDL. This code was later adapted to parse the array returned by the server.

Installation

  1. Set up the server:
    1. Upload the “Server” folder contents via FTP or other means.
    2. Create a MySQL database.
    3. Import the “Server/data/schema.sql” file into the database. This will create a “data” table in the database.
    4. Change the settings in the “Server/data/database.php” file to access the database (server, username, password).
  2. Set up the client:
    1. Open the “Client/Client.xcodeproj” project in Xcode.
    2. Compile the project.
    3. Execute the client, which will connect to your server and retrieve data.
    4. If required, change the URL of the remote data tapping the “Settings” button in the interface.

Other Links

The application icon and splash screen have been adapted from this picture.

License

This project is released with a liberal BSD license. See the LICENSE file for details.

About

This project showcases different transport formats and libraries to consume web services from an iOS application.

Resources

Stars

0 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - tabko/iPhoneWebServicesClient: This project showcases different transport formats and libraries to consume web services from an iOS application. · GitHub
Skip to content

Latest commit

History

118 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

iPhone Web Services Consumption Comparison

Introduction

This project showcases different transport formats and libraries to consume web services from an iPhone application. It features a server application, a command-line script that saves the output of the server application in different formats, and an iPhone client application (compatible with iPhone OS 3.0 and higher).

The server application (written in PHP) reads a MySQL database (Server/data/schema.sql) and outputs data in the following formats:

  • HTML
  • JSON
  • YAML
  • XML (arbitrary format)
  • SOAP
  • Property list
    • Binary property list
    • XML property list
  • CSV
  • Protocol Buffer (Google)

For each output format, there is a single “Formatter” subclass in the Server/formatters folder. A static method in the FormatterFactory class returns the formatter that corresponds to the requested output format.

Future Extensions

In future versions of this project, the following formats and libraries could be integrated:

Libraries Used

The project uses several different libraries:

For the server:

  • cfpropertylist – A PHP Implementation Of Apple’s plist (PropertyList).
  • NuSOAPSOAP Toolkit for PHP.
  • spyc – A simple YAML loader/dumper class for PHP.
  • pb4php – Protocol Buffer for PHP

For the iPhone client:

  • AFNetworking – a very fast, NSOperation-based networking library
  • NextiveJSON – a very fast JSON parsing library
  • ASIHTTPRequest – wrapper around the CFNetwork API, no longer maintained
  • json-framework – A strict JSON parser/generator for Objective-C.
  • JSONKit – A Very High Performance Objective-C JSON Library.
  • YAJL-objc – Objective-C bindings for the YAJL parser.
  • BSJSON – A simple JSON parser in Objective-C.
  • touchcode – Repository of iPhone and iPod Touch source code.
  • cCSVParse – A CSV parsing library in Objective-C.
  • TBXML V1.3XML Parser by Tom Bradley.
  • KissXML – KissXML is a replacement for Cocoa’s NSXML cluster of classes. It is based on libxml.
  • TinyXML – TinyXML is a simple, small, C++ XML parser that can be easily integrating into other programs.
  • gdata-objectivec-clientXML support classes included in the Google Data APIs Objective-C Client Library.
  • APXML – NSXMLDocument ’substitute’ for iPhone/iPod Touch.
  • ProtocolBuffers – Objective-C Protocol Buffers for OSX and the iPhone.
  • AQXMLParser – Another parser for XML in Objective-C.
  • InAppSettingsKit – Library allowing to access the current setting bundle from the application.

YAML in Cocoa

For parsing YAML in Cocoa, the code in this page was adapted, removing dependencies on the Cocoa AppKit framework (not available on the iPhone).

If you want to compile the YAML::Syck library with Fink, follow these steps:

  1. Install Fink on Mac OS X 10.6 from source following these instructions (there is no binary installer available for Snow Leopard at the time of this writing).
  2. Type “/sw/bin/fink install syck” to install syck.
  3. The Xcode project should now compile without problems.

To avoid these steps above, this project includes a version of libsyck.a already compiled as a “fat binary” format for both ARM (iPhone OS) and Intel (Simulator) processors.

SOAP in Cocoa

The wsdl2objc tool was used to generate Objective-C (Cocoa) code from the server’s WSDL. This code was later adapted to parse the array returned by the server.

Installation

  1. Set up the server:
    1. Upload the “Server” folder contents via FTP or other means.
    2. Create a MySQL database.
    3. Import the “Server/data/schema.sql” file into the database. This will create a “data” table in the database.
    4. Change the settings in the “Server/data/database.php” file to access the database (server, username, password).
  2. Set up the client:
    1. Open the “Client/Client.xcodeproj” project in Xcode.
    2. Compile the project.
    3. Execute the client, which will connect to your server and retrieve data.
    4. If required, change the URL of the remote data tapping the “Settings” button in the interface.

Other Links

The application icon and splash screen have been adapted from this picture.

License

This project is released with a liberal BSD license. See the LICENSE file for details.

About

This project showcases different transport formats and libraries to consume web services from an iOS application.

Resources

Stars

0 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - tabko/iPhoneWebServicesClient: This project showcases different transport formats and libraries to consume web services from an iOS application. · GitHub
Skip to content

Latest commit

History

118 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

iPhone Web Services Consumption Comparison

Introduction

This project showcases different transport formats and libraries to consume web services from an iPhone application. It features a server application, a command-line script that saves the output of the server application in different formats, and an iPhone client application (compatible with iPhone OS 3.0 and higher).

The server application (written in PHP) reads a MySQL database (Server/data/schema.sql) and outputs data in the following formats:

  • HTML
  • JSON
  • YAML
  • XML (arbitrary format)
  • SOAP
  • Property list
    • Binary property list
    • XML property list
  • CSV
  • Protocol Buffer (Google)

For each output format, there is a single “Formatter” subclass in the Server/formatters folder. A static method in the FormatterFactory class returns the formatter that corresponds to the requested output format.

Future Extensions

In future versions of this project, the following formats and libraries could be integrated:

Libraries Used

The project uses several different libraries:

For the server:

  • cfpropertylist – A PHP Implementation Of Apple’s plist (PropertyList).
  • NuSOAPSOAP Toolkit for PHP.
  • spyc – A simple YAML loader/dumper class for PHP.
  • pb4php – Protocol Buffer for PHP

For the iPhone client:

  • AFNetworking – a very fast, NSOperation-based networking library
  • NextiveJSON – a very fast JSON parsing library
  • ASIHTTPRequest – wrapper around the CFNetwork API, no longer maintained
  • json-framework – A strict JSON parser/generator for Objective-C.
  • JSONKit – A Very High Performance Objective-C JSON Library.
  • YAJL-objc – Objective-C bindings for the YAJL parser.
  • BSJSON – A simple JSON parser in Objective-C.
  • touchcode – Repository of iPhone and iPod Touch source code.
  • cCSVParse – A CSV parsing library in Objective-C.
  • TBXML V1.3XML Parser by Tom Bradley.
  • KissXML – KissXML is a replacement for Cocoa’s NSXML cluster of classes. It is based on libxml.
  • TinyXML – TinyXML is a simple, small, C++ XML parser that can be easily integrating into other programs.
  • gdata-objectivec-clientXML support classes included in the Google Data APIs Objective-C Client Library.
  • APXML – NSXMLDocument ’substitute’ for iPhone/iPod Touch.
  • ProtocolBuffers – Objective-C Protocol Buffers for OSX and the iPhone.
  • AQXMLParser – Another parser for XML in Objective-C.
  • InAppSettingsKit – Library allowing to access the current setting bundle from the application.

YAML in Cocoa

For parsing YAML in Cocoa, the code in this page was adapted, removing dependencies on the Cocoa AppKit framework (not available on the iPhone).

If you want to compile the YAML::Syck library with Fink, follow these steps:

  1. Install Fink on Mac OS X 10.6 from source following these instructions (there is no binary installer available for Snow Leopard at the time of this writing).
  2. Type “/sw/bin/fink install syck” to install syck.
  3. The Xcode project should now compile without problems.

To avoid these steps above, this project includes a version of libsyck.a already compiled as a “fat binary” format for both ARM (iPhone OS) and Intel (Simulator) processors.

SOAP in Cocoa

The wsdl2objc tool was used to generate Objective-C (Cocoa) code from the server’s WSDL. This code was later adapted to parse the array returned by the server.

Installation

  1. Set up the server:
    1. Upload the “Server” folder contents via FTP or other means.
    2. Create a MySQL database.
    3. Import the “Server/data/schema.sql” file into the database. This will create a “data” table in the database.
    4. Change the settings in the “Server/data/database.php” file to access the database (server, username, password).
  2. Set up the client:
    1. Open the “Client/Client.xcodeproj” project in Xcode.
    2. Compile the project.
    3. Execute the client, which will connect to your server and retrieve data.
    4. If required, change the URL of the remote data tapping the “Settings” button in the interface.

Other Links

The application icon and splash screen have been adapted from this picture.

License

This project is released with a liberal BSD license. See the LICENSE file for details.

About

This project showcases different transport formats and libraries to consume web services from an iOS application.

Resources

Stars

0 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors