<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Josh Dale</title>
	<atom:link href="http://www.joshdale.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.joshdale.net</link>
	<description>Android Developer at Bypass Lane</description>
	<lastBuildDate>Fri, 03 Feb 2012 18:20:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>ActionBar Design Patterns on Pre-API 11 Devices</title>
		<link>http://www.joshdale.net/2012/01/31/actionbar-design-patterns-on-pre-api-11-devices/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=actionbar-design-patterns-on-pre-api-11-devices</link>
		<comments>http://www.joshdale.net/2012/01/31/actionbar-design-patterns-on-pre-api-11-devices/#comments</comments>
		<pubDate>Tue, 31 Jan 2012 16:26:56 +0000</pubDate>
		<dc:creator>Josh Dale</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[actionbar]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[sdk]]></category>

		<guid isPermaLink="false">http://www.joshdale.net/?p=104</guid>
		<description><![CDATA[The folks over at Android Developers have released some sample code to implement Action Bar design patterns for pre-API 11 devices. The code and concepts have been around for some time now, and many developers have been implementing 3rd-party libraries &#8230; <a href="http://www.joshdale.net/2012/01/31/actionbar-design-patterns-on-pre-api-11-devices/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The folks over at <a href="http://developer.android.com/resources/samples/ActionBarCompat/index.html" target="_blank">Android Developers</a> have released some sample code to implement Action Bar design patterns for pre-API 11 devices. The code and concepts have been around for some time now, and many developers have been implementing 3rd-party libraries to achieve this goal (<a href="http://actionbarsherlock.com/" target="_blank">ActionBarSherlock</a> and <a href="https://github.com/cyrilmottier/GreenDroid" target="_blank">GreenDroid</a>). Now with the latest code release of Android, Ice Cream Sandwich, developers need to consider <a href="http://developer.android.com/design/patterns/actionbar.html" target="_blank">standardized design</a> elements across all API levels.</p>
<p>The main goal of the ActionBar is to provide vital information to the user about your application. This is also a great place to use your icon or logo for brand recognition and consistent navigations throughout the app. Now the user subliminally thinks about your logo as a specific navigational action. If the user needs to return to the home screen in the app, they have to visualize your brand.</p>
<p><span id="more-104"></span></p>
<p>So, how do you implement ActionBarCompat? You will need to make sure that the target SDK level is at least 11 in your <em>AndroidManifest.xml</em>:</p>
<div id="gist-1724361" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'><span class="nt">&lt;manifest</span> <span class="err">...</span> <span class="nt">&gt;</span></div><div class='line' id='LC2'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="nt">&lt;uses-sdk</span> <span class="na">android:minSdkVersion=</span><span class="s">&quot;4&quot;</span></div><div class='line' id='LC3'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="na">android:targetSdkVersion=</span><span class="s">&quot;11&quot;</span> <span class="nt">/&gt;</span></div><div class='line' id='LC4'>&nbsp;&nbsp;&nbsp;&nbsp;...</div><div class='line' id='LC5'><span class="nt">&lt;/manifest&gt;</span></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/1724361/12eb69a1aa1ca121779eece0458ac8926437da8c/AndroidManifest.xml" style="float:right;">view raw</a>
            <a href="https://gist.github.com/1724361#file_android_manifest.xml" style="float:right;margin-right:10px;color:#666">AndroidManifest.xml</a>
            <a href="https://gist.github.com/1724361">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>

<p>When you declare this in your manifest, the Android SDK and the ActionBarCompat library project will utilize native declarations for devices greater than API 11.</p>
<p>Next, include these files in your project (create a new package including these classes):</p>
<ul class="nolist">
<li><a href="http://developer.android.com/resources/samples/ActionBarCompat/src/com/example/android/actionbarcompat/ActionBarActivity.html" target="_blank">ActionBarActivity.java</a></li>
<li><a href="http://developer.android.com/resources/samples/ActionBarCompat/src/com/example/android/actionbarcompat/ActionBarHelper.html" target="_blank">ActionBarHelper.java</a></li>
<li><a href="http://developer.android.com/resources/samples/ActionBarCompat/src/com/example/android/actionbarcompat/ActionBarHelperBase.html" target="_blank">ActionBarHelperBase.java</a></li>
<li><a href="http://developer.android.com/resources/samples/ActionBarCompat/src/com/example/android/actionbarcompat/ActionBarHelperHoneycomb.html" target="_blank">ActionBarHelperHoneycomb.java</a></li>
<li><a href="http://developer.android.com/resources/samples/ActionBarCompat/src/com/example/android/actionbarcompat/ActionBarHelperICS.html" target="_blank">ActionBarHelperICS.java</a></li>
<li><a href="http://developer.android.com/resources/samples/ActionBarCompat/src/com/example/android/actionbarcompat/MainActivity.html" target="_blank">MainActivity.java</a></li>
<li><a href="http://developer.android.com/resources/samples/ActionBarCompat/src/com/example/android/actionbarcompat/SimpleMenu.html" target="_blank">SimpleMenu.java</a></li>
<li><a href="http://developer.android.com/resources/samples/ActionBarCompat/src/com/example/android/actionbarcompat/SimpleMenuItem.html" target="_blank">SimpleMenuItem.java</a></li>
</ul>
<p>If you take a closer look at <a href="http://developer.android.com/resources/samples/ActionBarCompat/src/com/example/android/actionbarcompat/MainActivity.html" target="_blank"><i>MainActivity.java</i></a>, you can see that this activity extends the ActionBarActivity class.  In <a href="http://developer.android.com/resources/samples/ActionBarCompat/src/com/example/android/actionbarcompat/ActionBarActivity.html" target="_blank"><i>ActionBarActivity.java</i></a>, this class extends the Activity class that we all know and love.  What&#8217;s great about this particular class is that it does all the heavy lifting for us to utilize the title bar as a pseudo-ActionBar.</p>
<p>You will need to makes sure that you are importing the available <a href="http://developer.android.com/resources/samples/ActionBarCompat/res/index.html" target="_blank"><i>/res</i></a> folders.  In that folder, you will see layouts covering all API levels (including ICS).  You can take a look at the <a href="http://developer.android.com/resources/samples/ActionBarCompat/res/values/index.html" target="_blank"><i>/res/values</i></a> folder and make necessary adjustments for styling and height dimensions on pre-API 11 devices.</p>
<p>So, that&#8217;s the 50,000 foot view of this project.  Make sure that you&#8217;ve included all these files in you project and make the necessary adjustments tailored for you application.  If you have any other questions, or something&#8217;s not working correctly, please leave a comment.  Also, take a look at this project in much greater detail at <a href="http://developer.android.com/resources/samples/ActionBarCompat/index.html" target="_blank">Android Developers</a>.</p>
<p>It&#8217;s great that <a href="http://source.android.com/" target="_blank">AOSP</a> is available to all developers and can be implemented in all your future projects; just make sure you provide credit where credit is due.  Please take advantage of what Android Developers provides for us devs.  Happy deving!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joshdale.net/2012/01/31/actionbar-design-patterns-on-pre-api-11-devices/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Everybody Loves Vibrating Toasts</title>
		<link>http://www.joshdale.net/2011/12/30/everybody-loves-vibrating-toasts/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=everybody-loves-vibrating-toasts</link>
		<comments>http://www.joshdale.net/2011/12/30/everybody-loves-vibrating-toasts/#comments</comments>
		<pubDate>Fri, 30 Dec 2011 16:35:47 +0000</pubDate>
		<dc:creator>Josh Dale</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[snippet]]></category>
		<category><![CDATA[toast]]></category>

		<guid isPermaLink="false">http://www.joshdale.net/?p=83</guid>
		<description><![CDATA[I came across an interesting idea on stackoverflow.com for Toast notifications on Android. It&#8217;s a simple class that extends Toast. We will modify the constructor to vibrate your device when this new Toast is displayed on screen. Below is the &#8230; <a href="http://www.joshdale.net/2011/12/30/everybody-loves-vibrating-toasts/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I came across an interesting idea on <a href="http://stackoverflow.com/questions/4206675/android-vibrate-on-toast-homer-mmmm-vibrate-on-toast" target="_blank">stackoverflow.com</a> for Toast notifications on Android.</p>
<p>It&#8217;s a simple class that extends Toast.  We will modify the constructor to vibrate your device when this new Toast is displayed on screen.  Below is the ~5 lined class:</p>
<div id="gist-1540485" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'><span class="kd">public</span> <span class="kd">class</span> <span class="nc">VibratingToast</span> <span class="kd">extends</span> <span class="n">Toast</span> <span class="o">{</span></div><div class='line' id='LC2'>	<span class="kd">public</span> <span class="nf">VibratingToast</span><span class="o">(</span><span class="n">Context</span> <span class="n">context</span><span class="o">,</span> <span class="n">CharSequence</span> <span class="n">text</span><span class="o">,</span> <span class="kt">int</span> <span class="n">duration</span><span class="o">)</span> <span class="o">{</span></div><div class='line' id='LC3'>		<span class="kd">super</span><span class="o">(</span><span class="n">context</span><span class="o">);</span></div><div class='line' id='LC4'><br/></div><div class='line' id='LC5'>		<span class="o">((</span><span class="n">Vibrator</span><span class="o">)</span> <span class="n">context</span><span class="o">.</span><span class="na">getSystemService</span><span class="o">(</span><span class="n">Context</span><span class="o">.</span><span class="na">VIBRATOR_SERVICE</span><span class="o">)).</span><span class="na">vibrate</span><span class="o">(</span><span class="mi">300</span><span class="o">);</span></div><div class='line' id='LC6'><br/></div><div class='line' id='LC7'>		<span class="kd">super</span><span class="o">.</span><span class="na">makeText</span><span class="o">(</span><span class="n">context</span><span class="o">,</span> <span class="n">text</span><span class="o">,</span> <span class="n">duration</span><span class="o">).</span><span class="na">show</span><span class="o">();</span></div><div class='line' id='LC8'>	<span class="o">}</span></div><div class='line' id='LC9'><span class="o">}</span></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/1540485/80a614f75e49f4a7c2970db9f38e6d97c5057929/VibratingToast.java" style="float:right;">view raw</a>
            <a href="https://gist.github.com/1540485#file_vibrating_toast.java" style="float:right;margin-right:10px;color:#666">VibratingToast.java</a>
            <a href="https://gist.github.com/1540485">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>

<p><span id="more-83"></span></p>
<p>Now all you have to do is call your new Toast when you want some vibrations:</p>
<p><code>new VibratingToast(getApplicationContext(), "some message that needs vibrations...", Toast.LENGTH_LONG);</code></p>
<p>And, don&#8217;t forget that you will need to declare vibrating permission in your <em>AndroidManifest.xml</em>:</p>
<p><code>&lt;uses-permission android:name="android.permission.VIBRATE" /&gt;</code></p>
<p>Easy and simple!  Happy deving!!!</p>
<p>P.S. &#8211; if you want to get fancy and add another parameter to our constructor to accept a vibrating duration integer, please leave a comment or snippet on <a href="https://gist.github.com/1540485" target="_blank">gist.github.com</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joshdale.net/2011/12/30/everybody-loves-vibrating-toasts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RESTclient for Blackberry</title>
		<link>http://www.joshdale.net/2011/10/29/restclient-for-blackberry/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=restclient-for-blackberry</link>
		<comments>http://www.joshdale.net/2011/10/29/restclient-for-blackberry/#comments</comments>
		<pubDate>Sat, 29 Oct 2011 18:32:16 +0000</pubDate>
		<dc:creator>Josh Dale</dc:creator>
				<category><![CDATA[Blackberry]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[rest client]]></category>
		<category><![CDATA[snippet]]></category>

		<guid isPermaLink="false">http://www.joshdale.net/?p=35</guid>
		<description><![CDATA[Recently, I&#8217;ve ventured out into the Blackberry app development space and found that some documentation is lacking for developers to create awesome applications for that platform. After searching around Google, Stack Overflow, and RIM&#8217;s developer zone, I came to the &#8230; <a href="http://www.joshdale.net/2011/10/29/restclient-for-blackberry/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Recently, I&#8217;ve ventured out into the Blackberry app development space and found that some documentation is lacking for developers to create awesome applications for that platform. After searching around Google, Stack Overflow, and RIM&#8217;s developer zone, I came to the conclusion that there isn&#8217;t any good examples of how to implement a REST client effectively in a Blackberry Java-based environment.</p>
<p>REST clients are a mobile app developers best friend. They allow developers to make lightweight network calls to useful APIs such as the Graph API, Twitter&#8217;s API, and Google&#8217;s family of APIs including Maps, Google+, and Youtube. I came across a great example, <a href="http://www.appstoreblog.com/2011/05/22/restclient-for-android/" target="_blank">RESTclient for Android</a> by Tyler Smith, and used this implementation to create a foundation for a Blackberry REST client.</p>
<p><span id="more-35"></span></p>
<p>Introducing <a href="https://gist.github.com/1324853" target="_blank">RESTclient for Blackberry</a> with basic authentication and JSON body posting (notice that this implementation only utilizes the REST verbs GET and POST):</p>
<div id="gist-1324853" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'><span class="kd">public</span> <span class="kd">class</span> <span class="nc">RestClient</span> <span class="o">{</span></div><div class='line' id='LC2'>	<span class="kd">private</span> <span class="n">String</span> <span class="n">_url</span><span class="o">;</span></div><div class='line' id='LC3'><br/></div><div class='line' id='LC4'>	<span class="kd">private</span> <span class="n">Vector</span> <span class="n">_headers</span><span class="o">;</span></div><div class='line' id='LC5'>	<span class="kd">private</span> <span class="n">Vector</span> <span class="n">_params</span><span class="o">;</span></div><div class='line' id='LC6'><br/></div><div class='line' id='LC7'>	<span class="kd">private</span> <span class="n">String</span> <span class="n">_json</span><span class="o">;</span></div><div class='line' id='LC8'><br/></div><div class='line' id='LC9'>	<span class="kd">private</span> <span class="kt">int</span> <span class="n">_response_code</span><span class="o">;</span></div><div class='line' id='LC10'>	<span class="kd">private</span> <span class="n">String</span> <span class="n">_response</span><span class="o">;</span></div><div class='line' id='LC11'><br/></div><div class='line' id='LC12'>	<span class="kd">private</span> <span class="kt">boolean</span> <span class="n">_authentication</span> <span class="o">=</span> <span class="kc">false</span><span class="o">;</span></div><div class='line' id='LC13'>	<span class="kd">private</span> <span class="n">String</span> <span class="n">_username</span><span class="o">;</span></div><div class='line' id='LC14'>	<span class="kd">private</span> <span class="n">String</span> <span class="n">_password</span><span class="o">;</span></div><div class='line' id='LC15'><br/></div><div class='line' id='LC16'>	<span class="kd">public</span> <span class="nf">RestClient</span><span class="o">()</span> <span class="o">{</span></div><div class='line' id='LC17'>		<span class="n">_url</span> <span class="o">=</span> <span class="kc">null</span><span class="o">;</span></div><div class='line' id='LC18'><br/></div><div class='line' id='LC19'>		<span class="n">_headers</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Vector</span><span class="o">();</span></div><div class='line' id='LC20'>		<span class="n">_params</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Vector</span><span class="o">();</span></div><div class='line' id='LC21'>	<span class="o">}</span></div><div class='line' id='LC22'><br/></div><div class='line' id='LC23'>	<span class="kd">public</span> <span class="nf">RestClient</span><span class="o">(</span><span class="n">String</span> <span class="n">url</span><span class="o">)</span> <span class="o">{</span></div><div class='line' id='LC24'>		<span class="n">_url</span> <span class="o">=</span> <span class="n">url</span><span class="o">;</span></div><div class='line' id='LC25'><br/></div><div class='line' id='LC26'>		<span class="n">_headers</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Vector</span><span class="o">();</span></div><div class='line' id='LC27'>		<span class="n">_params</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Vector</span><span class="o">();</span></div><div class='line' id='LC28'>	<span class="o">}</span></div><div class='line' id='LC29'><br/></div><div class='line' id='LC30'>	<span class="kd">public</span> <span class="kt">void</span> <span class="nf">addBasicAuth</span><span class="o">(</span><span class="n">String</span> <span class="n">username</span><span class="o">,</span> <span class="n">String</span> <span class="n">password</span><span class="o">)</span> <span class="o">{</span></div><div class='line' id='LC31'>		<span class="n">_authentication</span> <span class="o">=</span> <span class="kc">true</span><span class="o">;</span></div><div class='line' id='LC32'><br/></div><div class='line' id='LC33'>		<span class="n">_username</span> <span class="o">=</span> <span class="n">username</span><span class="o">;</span></div><div class='line' id='LC34'>		<span class="n">_password</span> <span class="o">=</span> <span class="n">password</span><span class="o">;</span></div><div class='line' id='LC35'>	<span class="o">}</span></div><div class='line' id='LC36'><br/></div><div class='line' id='LC37'>	<span class="kd">public</span> <span class="kt">void</span> <span class="nf">addHeader</span><span class="o">(</span><span class="n">String</span> <span class="n">name</span><span class="o">,</span> <span class="n">String</span> <span class="n">value</span><span class="o">)</span> <span class="o">{</span></div><div class='line' id='LC38'>		<span class="n">_headers</span><span class="o">.</span><span class="na">addElement</span><span class="o">(</span><span class="k">new</span> <span class="n">NameValuePair</span><span class="o">(</span><span class="n">name</span><span class="o">,</span> <span class="n">value</span><span class="o">));</span></div><div class='line' id='LC39'>	<span class="o">}</span></div><div class='line' id='LC40'><br/></div><div class='line' id='LC41'>	<span class="kd">public</span> <span class="kt">void</span> <span class="nf">addParam</span><span class="o">(</span><span class="n">String</span> <span class="n">name</span><span class="o">,</span> <span class="n">String</span> <span class="n">value</span><span class="o">)</span> <span class="o">{</span></div><div class='line' id='LC42'>		<span class="n">_params</span><span class="o">.</span><span class="na">addElement</span><span class="o">(</span><span class="k">new</span> <span class="n">NameValuePair</span><span class="o">(</span><span class="n">name</span><span class="o">,</span> <span class="n">value</span><span class="o">));</span></div><div class='line' id='LC43'>	<span class="o">}</span></div><div class='line' id='LC44'><br/></div><div class='line' id='LC45'>	<span class="kd">public</span> <span class="kt">void</span> <span class="nf">execute</span><span class="o">(</span><span class="kt">int</span> <span class="n">method</span><span class="o">)</span> <span class="kd">throws</span> <span class="n">Exception</span> <span class="o">{</span></div><div class='line' id='LC46'>		<span class="k">switch</span><span class="o">(</span><span class="n">method</span><span class="o">)</span> <span class="o">{</span></div><div class='line' id='LC47'>		<span class="k">case</span> <span class="n">RestMethod</span><span class="o">.</span><span class="na">GET</span><span class="o">:</span> <span class="o">{</span></div><div class='line' id='LC48'>			<span class="n">HttpsConnection</span> <span class="n">request</span> <span class="o">=</span> <span class="o">(</span><span class="n">HttpsConnection</span><span class="o">)</span> <span class="n">Connector</span><span class="o">.</span><span class="na">open</span><span class="o">(</span><span class="n">_url</span> <span class="o">+</span> <span class="n">addGetParams</span><span class="o">());</span></div><div class='line' id='LC49'>			<span class="n">request</span><span class="o">.</span><span class="na">setRequestMethod</span><span class="o">(</span><span class="n">HttpConnection</span><span class="o">.</span><span class="na">GET</span><span class="o">);</span></div><div class='line' id='LC50'>			<span class="n">addHeaderParams</span><span class="o">(</span><span class="n">request</span><span class="o">);</span></div><div class='line' id='LC51'><br/></div><div class='line' id='LC52'>			<span class="n">executeRequest</span><span class="o">(</span><span class="n">request</span><span class="o">);</span></div><div class='line' id='LC53'>			<span class="k">break</span><span class="o">;</span></div><div class='line' id='LC54'>		<span class="o">}</span></div><div class='line' id='LC55'>		<span class="k">case</span> <span class="n">RestMethod</span><span class="o">.</span><span class="na">POST</span><span class="o">:</span> <span class="o">{</span></div><div class='line' id='LC56'>			<span class="n">HttpsConnection</span> <span class="n">request</span> <span class="o">=</span> <span class="o">(</span><span class="n">HttpsConnection</span><span class="o">)</span> <span class="n">Connector</span><span class="o">.</span><span class="na">open</span><span class="o">(</span><span class="n">_url</span><span class="o">);</span></div><div class='line' id='LC57'>			<span class="n">request</span><span class="o">.</span><span class="na">setRequestMethod</span><span class="o">(</span><span class="n">HttpConnection</span><span class="o">.</span><span class="na">POST</span><span class="o">);</span></div><div class='line' id='LC58'>			<span class="n">addHeaderParams</span><span class="o">(</span><span class="n">request</span><span class="o">);</span></div><div class='line' id='LC59'>			<span class="n">addBodyParams</span><span class="o">(</span><span class="n">request</span><span class="o">);</span></div><div class='line' id='LC60'><br/></div><div class='line' id='LC61'>			<span class="n">executeRequest</span><span class="o">(</span><span class="n">request</span><span class="o">);</span></div><div class='line' id='LC62'>			<span class="k">break</span><span class="o">;</span></div><div class='line' id='LC63'>		<span class="o">}</span></div><div class='line' id='LC64'>		<span class="o">}</span></div><div class='line' id='LC65'>	<span class="o">}</span></div><div class='line' id='LC66'><br/></div><div class='line' id='LC67'>	<span class="kd">private</span> <span class="kt">void</span> <span class="nf">addHeaderParams</span><span class="o">(</span><span class="n">HttpsConnection</span> <span class="n">request</span><span class="o">)</span> <span class="kd">throws</span> <span class="n">Exception</span> <span class="o">{</span></div><div class='line' id='LC68'>		<span class="k">for</span><span class="o">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="o">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">_headers</span><span class="o">.</span><span class="na">size</span><span class="o">();</span> <span class="n">i</span><span class="o">++)</span> <span class="o">{</span></div><div class='line' id='LC69'>			<span class="n">request</span><span class="o">.</span><span class="na">setRequestProperty</span><span class="o">(((</span><span class="n">NameValuePair</span><span class="o">)</span> <span class="n">_headers</span><span class="o">.</span><span class="na">elementAt</span><span class="o">(</span><span class="n">i</span><span class="o">)).</span><span class="na">getName</span><span class="o">(),</span> <span class="o">((</span><span class="n">NameValuePair</span><span class="o">)</span> <span class="n">_headers</span><span class="o">.</span><span class="na">elementAt</span><span class="o">(</span><span class="n">i</span><span class="o">)).</span><span class="na">getValue</span><span class="o">());</span></div><div class='line' id='LC70'>		<span class="o">}</span></div><div class='line' id='LC71'><br/></div><div class='line' id='LC72'>		<span class="k">if</span><span class="o">(</span><span class="n">_authentication</span><span class="o">)</span> <span class="o">{</span></div><div class='line' id='LC73'>			<span class="kt">byte</span><span class="o">[]</span> <span class="n">cred</span> <span class="o">=</span> <span class="n">Base64OutputStream</span><span class="o">.</span><span class="na">encode</span><span class="o">((</span><span class="n">_username</span> <span class="o">+</span> <span class="s">&quot;:&quot;</span> <span class="o">+</span> <span class="n">_password</span><span class="o">).</span><span class="na">getBytes</span><span class="o">(</span><span class="s">&quot;UTF-8&quot;</span><span class="o">),</span> <span class="mi">0</span><span class="o">,</span> <span class="o">(</span><span class="n">_username</span> <span class="o">+</span> <span class="s">&quot;:&quot;</span> <span class="o">+</span> <span class="n">_password</span><span class="o">).</span><span class="na">length</span><span class="o">(),</span> <span class="kc">false</span><span class="o">,</span> <span class="kc">false</span><span class="o">);</span></div><div class='line' id='LC74'><br/></div><div class='line' id='LC75'>			<span class="n">request</span><span class="o">.</span><span class="na">setRequestProperty</span><span class="o">(</span><span class="s">&quot;Authorization&quot;</span><span class="o">,</span> <span class="s">&quot;Basic &quot;</span> <span class="o">+</span> <span class="k">new</span> <span class="n">String</span><span class="o">(</span><span class="n">cred</span><span class="o">).</span><span class="na">toString</span><span class="o">());</span></div><div class='line' id='LC76'>		<span class="o">}</span></div><div class='line' id='LC77'>	<span class="o">}</span></div><div class='line' id='LC78'><br/></div><div class='line' id='LC79'>	<span class="kd">private</span> <span class="kt">void</span> <span class="nf">addBodyParams</span><span class="o">(</span><span class="n">HttpsConnection</span> <span class="n">request</span><span class="o">)</span> <span class="kd">throws</span> <span class="n">Exception</span> <span class="o">{</span></div><div class='line' id='LC80'>		<span class="k">if</span><span class="o">(</span><span class="n">_json</span> <span class="o">!=</span> <span class="kc">null</span><span class="o">)</span> <span class="o">{</span></div><div class='line' id='LC81'>			<span class="kt">byte</span><span class="o">[]</span> <span class="n">data</span> <span class="o">=</span> <span class="n">_json</span><span class="o">.</span><span class="na">getBytes</span><span class="o">(</span><span class="s">&quot;UTF-8&quot;</span><span class="o">);</span></div><div class='line' id='LC82'><br/></div><div class='line' id='LC83'>			<span class="n">request</span><span class="o">.</span><span class="na">setRequestProperty</span><span class="o">(</span><span class="s">&quot;Content-Type&quot;</span><span class="o">,</span> <span class="s">&quot;application/json&quot;</span><span class="o">);</span></div><div class='line' id='LC84'>			<span class="n">request</span><span class="o">.</span><span class="na">setRequestProperty</span><span class="o">(</span><span class="s">&quot;Content-Length&quot;</span><span class="o">,</span> <span class="n">String</span><span class="o">.</span><span class="na">valueOf</span><span class="o">(</span><span class="n">data</span><span class="o">.</span><span class="na">length</span><span class="o">));</span></div><div class='line' id='LC85'><br/></div><div class='line' id='LC86'>			<span class="n">OutputStream</span> <span class="n">os</span> <span class="o">=</span> <span class="n">request</span><span class="o">.</span><span class="na">openDataOutputStream</span><span class="o">();</span></div><div class='line' id='LC87'><br/></div><div class='line' id='LC88'>			<span class="n">os</span><span class="o">.</span><span class="na">write</span><span class="o">(</span><span class="n">data</span><span class="o">);</span></div><div class='line' id='LC89'>			<span class="n">os</span><span class="o">.</span><span class="na">flush</span><span class="o">();</span></div><div class='line' id='LC90'>			<span class="n">os</span><span class="o">.</span><span class="na">close</span><span class="o">();</span></div><div class='line' id='LC91'>		<span class="o">}</span></div><div class='line' id='LC92'>	<span class="o">}</span></div><div class='line' id='LC93'><br/></div><div class='line' id='LC94'>	<span class="kd">private</span> <span class="n">String</span> <span class="nf">addGetParams</span><span class="o">()</span> <span class="kd">throws</span> <span class="n">Exception</span> <span class="o">{</span>		</div><div class='line' id='LC95'>		<span class="n">StringBuffer</span> <span class="n">buff</span> <span class="o">=</span> <span class="k">new</span> <span class="n">StringBuffer</span><span class="o">();</span></div><div class='line' id='LC96'>		<span class="k">if</span><span class="o">(!</span><span class="n">_params</span><span class="o">.</span><span class="na">isEmpty</span><span class="o">())</span> <span class="o">{</span></div><div class='line' id='LC97'>			<span class="n">buff</span><span class="o">.</span><span class="na">append</span><span class="o">(</span><span class="s">&quot;?&quot;</span><span class="o">);</span></div><div class='line' id='LC98'><br/></div><div class='line' id='LC99'>			<span class="k">for</span><span class="o">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="o">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">_params</span><span class="o">.</span><span class="na">size</span><span class="o">();</span> <span class="n">i</span><span class="o">++)</span> <span class="o">{</span></div><div class='line' id='LC100'>				<span class="n">buff</span><span class="o">.</span><span class="na">append</span><span class="o">(</span><span class="n">_params</span><span class="o">.</span><span class="na">size</span><span class="o">()</span> <span class="o">&gt;</span> <span class="mi">1</span> <span class="o">?</span> <span class="s">&quot;&amp;&quot;</span> <span class="o">:</span> <span class="s">&quot;&quot;</span> <span class="o">+</span> <span class="o">((</span><span class="n">NameValuePair</span><span class="o">)</span> <span class="n">_params</span><span class="o">.</span><span class="na">elementAt</span><span class="o">(</span><span class="n">i</span><span class="o">)).</span><span class="na">getName</span><span class="o">()</span> <span class="o">+</span> <span class="o">((</span><span class="n">NameValuePair</span><span class="o">)</span> <span class="n">_params</span><span class="o">.</span><span class="na">elementAt</span><span class="o">(</span><span class="n">i</span><span class="o">)).</span><span class="na">getValue</span><span class="o">());</span></div><div class='line' id='LC101'>			<span class="o">}</span></div><div class='line' id='LC102'>		<span class="o">}</span></div><div class='line' id='LC103'><br/></div><div class='line' id='LC104'>		<span class="k">return</span> <span class="n">buff</span><span class="o">.</span><span class="na">toString</span><span class="o">();</span></div><div class='line' id='LC105'>	<span class="o">}</span></div><div class='line' id='LC106'><br/></div><div class='line' id='LC107'>	<span class="kd">public</span> <span class="kt">int</span> <span class="nf">getResponseCode</span><span class="o">()</span> <span class="o">{</span></div><div class='line' id='LC108'>		<span class="k">return</span> <span class="n">_response_code</span><span class="o">;</span></div><div class='line' id='LC109'>	<span class="o">}</span></div><div class='line' id='LC110'><br/></div><div class='line' id='LC111'>	<span class="kd">public</span> <span class="n">String</span> <span class="nf">getResponse</span><span class="o">()</span> <span class="o">{</span></div><div class='line' id='LC112'>		<span class="k">return</span> <span class="n">_response</span><span class="o">;</span></div><div class='line' id='LC113'>	<span class="o">}</span></div><div class='line' id='LC114'><br/></div><div class='line' id='LC115'>	<span class="kd">public</span> <span class="kt">void</span> <span class="nf">setURL</span><span class="o">(</span><span class="n">String</span> <span class="n">url</span><span class="o">)</span> <span class="o">{</span></div><div class='line' id='LC116'>		<span class="n">_url</span> <span class="o">=</span> <span class="n">url</span><span class="o">;</span></div><div class='line' id='LC117'>	<span class="o">}</span></div><div class='line' id='LC118'><br/></div><div class='line' id='LC119'>	<span class="kd">public</span> <span class="kt">void</span> <span class="nf">setJSONString</span><span class="o">(</span><span class="n">String</span> <span class="n">json</span><span class="o">)</span> <span class="o">{</span></div><div class='line' id='LC120'>		<span class="n">_json</span> <span class="o">=</span> <span class="n">json</span><span class="o">;</span></div><div class='line' id='LC121'>	<span class="o">}</span></div><div class='line' id='LC122'><br/></div><div class='line' id='LC123'>	<span class="kd">private</span> <span class="kt">void</span> <span class="nf">executeRequest</span><span class="o">(</span><span class="n">HttpsConnection</span> <span class="n">request</span><span class="o">)</span> <span class="o">{</span>		</div><div class='line' id='LC124'>		<span class="k">try</span> <span class="o">{</span></div><div class='line' id='LC125'>			<span class="n">_response_code</span> <span class="o">=</span> <span class="n">request</span><span class="o">.</span><span class="na">getResponseCode</span><span class="o">();</span></div><div class='line' id='LC126'><br/></div><div class='line' id='LC127'>			<span class="k">if</span><span class="o">(</span><span class="n">_response_code</span> <span class="o">==</span> <span class="n">HttpsConnection</span><span class="o">.</span><span class="na">HTTP_OK</span><span class="o">)</span> <span class="o">{</span></div><div class='line' id='LC128'>				<span class="n">InputStream</span> <span class="n">is</span> <span class="o">=</span> <span class="n">request</span><span class="o">.</span><span class="na">openInputStream</span><span class="o">();</span></div><div class='line' id='LC129'><br/></div><div class='line' id='LC130'>				<span class="kt">int</span> <span class="n">len</span> <span class="o">=</span> <span class="o">(</span><span class="kt">int</span><span class="o">)</span> <span class="n">request</span><span class="o">.</span><span class="na">getLength</span><span class="o">();</span></div><div class='line' id='LC131'>				<span class="k">if</span><span class="o">(</span><span class="n">len</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="o">)</span> <span class="o">{</span></div><div class='line' id='LC132'>					<span class="kt">int</span> <span class="n">actual</span> <span class="o">=</span> <span class="mi">0</span><span class="o">;</span></div><div class='line' id='LC133'>					<span class="kt">int</span> <span class="n">read</span> <span class="o">=</span> <span class="mi">0</span><span class="o">;</span></div><div class='line' id='LC134'>					<span class="kt">byte</span><span class="o">[]</span> <span class="n">data</span> <span class="o">=</span> <span class="k">new</span> <span class="kt">byte</span><span class="o">[</span><span class="n">len</span><span class="o">];</span></div><div class='line' id='LC135'>					<span class="k">while</span><span class="o">((</span><span class="n">read</span> <span class="o">!=</span> <span class="n">len</span><span class="o">)</span> <span class="o">&amp;&amp;</span> <span class="o">(</span><span class="n">actual</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="o">))</span> <span class="o">{</span></div><div class='line' id='LC136'>						<span class="n">actual</span> <span class="o">=</span> <span class="n">is</span><span class="o">.</span><span class="na">read</span><span class="o">(</span><span class="n">data</span><span class="o">,</span> <span class="n">read</span><span class="o">,</span> <span class="n">len</span> <span class="o">-</span> <span class="n">read</span><span class="o">);</span></div><div class='line' id='LC137'>						<span class="n">read</span> <span class="o">+=</span> <span class="n">actual</span><span class="o">;</span></div><div class='line' id='LC138'>					<span class="o">}</span></div><div class='line' id='LC139'><br/></div><div class='line' id='LC140'>					<span class="n">_response</span> <span class="o">=</span> <span class="k">new</span> <span class="n">String</span><span class="o">(</span><span class="n">data</span><span class="o">).</span><span class="na">toString</span><span class="o">();</span></div><div class='line' id='LC141'>				<span class="o">}</span></div><div class='line' id='LC142'><br/></div><div class='line' id='LC143'>				<span class="n">is</span><span class="o">.</span><span class="na">close</span><span class="o">();</span></div><div class='line' id='LC144'><br/></div><div class='line' id='LC145'>				<span class="n">_params</span><span class="o">.</span><span class="na">removeAllElements</span><span class="o">();</span></div><div class='line' id='LC146'>				<span class="n">_headers</span><span class="o">.</span><span class="na">removeAllElements</span><span class="o">();</span></div><div class='line' id='LC147'>			<span class="o">}</span></div><div class='line' id='LC148'>		<span class="o">}</span> <span class="k">catch</span> <span class="o">(</span><span class="n">Exception</span> <span class="n">e</span><span class="o">)</span> <span class="o">{</span></div><div class='line' id='LC149'>			<span class="n">e</span><span class="o">.</span><span class="na">printStackTrace</span><span class="o">();</span></div><div class='line' id='LC150'>		<span class="o">}</span></div><div class='line' id='LC151'>	<span class="o">}</span></div><div class='line' id='LC152'><span class="o">}</span></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/1324853/c19bf8f6da2a4d40cc6a496af7cf6c3417766a17/RestClient.java" style="float:right;">view raw</a>
            <a href="https://gist.github.com/1324853#file_rest_client.java" style="float:right;margin-right:10px;color:#666">RestClient.java</a>
            <a href="https://gist.github.com/1324853">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>

<p>Take a look at this snippet of code&#8230;</p>
<p><code>public void execute(int method) throws Exception { .. }</code></p>
<p>We define <em>int method</em> by invoking the RestMethod class:</p>
<div id="gist-1324853" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'><span class="kd">public</span> <span class="kd">class</span> <span class="nc">RestMethod</span> <span class="o">{</span></div><div class='line' id='LC2'>	<span class="kd">public</span> <span class="kd">static</span> <span class="kd">final</span> <span class="kt">int</span> <span class="n">GET</span> <span class="o">=</span> <span class="mi">0</span><span class="o">;</span></div><div class='line' id='LC3'>	<span class="kd">public</span> <span class="kd">static</span> <span class="kd">final</span> <span class="kt">int</span> <span class="n">POST</span> <span class="o">=</span> <span class="mi">1</span><span class="o">;</span></div><div class='line' id='LC4'><span class="o">}</span></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/1324853/63aa1006ec351eb44d34d9f60ed3bac30db75677/RestMethod.java" style="float:right;">view raw</a>
            <a href="https://gist.github.com/1324853#file_rest_method.java" style="float:right;margin-right:10px;color:#666">RestMethod.java</a>
            <a href="https://gist.github.com/1324853">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>

<p>And there you have it. If you have anything else to contribute, please feel free to comment below. Thanks to Tyler Smith, and the other contributors for this evolving code. Happy deving!</p>
<p><strong>UPDATE:</strong></p>
<p>And the NameValuePair class:</p>
<div id="gist-1324853" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'><span class="kd">public</span> <span class="kd">class</span> <span class="nc">NameValuePair</span> <span class="o">{</span></div><div class='line' id='LC2'>	<span class="kd">private</span> <span class="n">String</span> <span class="n">_name</span><span class="o">;</span></div><div class='line' id='LC3'>	<span class="kd">private</span> <span class="n">String</span> <span class="n">_value</span><span class="o">;</span></div><div class='line' id='LC4'><br/></div><div class='line' id='LC5'>	<span class="kd">public</span> <span class="nf">NameValuePair</span><span class="o">(</span><span class="n">String</span> <span class="n">name</span><span class="o">,</span> <span class="n">String</span> <span class="n">value</span><span class="o">)</span> <span class="o">{</span></div><div class='line' id='LC6'>		<span class="n">_name</span> <span class="o">=</span> <span class="n">name</span><span class="o">;</span></div><div class='line' id='LC7'>		<span class="n">_value</span> <span class="o">=</span> <span class="n">value</span><span class="o">;</span></div><div class='line' id='LC8'>	<span class="o">}</span></div><div class='line' id='LC9'><br/></div><div class='line' id='LC10'>	<span class="kd">public</span> <span class="n">String</span> <span class="nf">getName</span><span class="o">()</span> <span class="o">{</span></div><div class='line' id='LC11'>		<span class="k">return</span> <span class="n">_name</span><span class="o">;</span></div><div class='line' id='LC12'>	<span class="o">}</span></div><div class='line' id='LC13'><br/></div><div class='line' id='LC14'>	<span class="kd">public</span> <span class="n">String</span> <span class="nf">getValue</span><span class="o">()</span> <span class="o">{</span></div><div class='line' id='LC15'>		<span class="k">return</span> <span class="n">_value</span><span class="o">;</span></div><div class='line' id='LC16'>	<span class="o">}</span></div><div class='line' id='LC17'><span class="o">}</span></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/1324853/03d60e2a639910aa758306712732404e1e27a455/NameValuePair.java" style="float:right;">view raw</a>
            <a href="https://gist.github.com/1324853#file_name_value_pair.java" style="float:right;margin-right:10px;color:#666">NameValuePair.java</a>
            <a href="https://gist.github.com/1324853">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://www.joshdale.net/2011/10/29/restclient-for-blackberry/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

