<?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>Zend Framework Blog &#187; cURL</title>
	<atom:link href="http://blog.richardknop.com/tag/curl/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.richardknop.com</link>
	<description>Zend Framework, PHP, Django, Python, SQL, MySQL, PostgreSQL, Oracle, PL/SQL, data model patterns, OOP, design patterns, JavaScript, jQuery, HTML, XHTML, CSS, XML, web services &#38; APIs, Security, E-commerce and much more</description>
	<lastBuildDate>Sat, 04 Feb 2012 19:47:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Working with Twitter API in PHP</title>
		<link>http://blog.richardknop.com/2009/05/working-with-twitter-api-in-php/</link>
		<comments>http://blog.richardknop.com/2009/05/working-with-twitter-api-in-php/#comments</comments>
		<pubDate>Fri, 29 May 2009 21:37:55 +0000</pubDate>
		<dc:creator>Richard Knop</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[cURL]]></category>
		<category><![CDATA[Twitter API]]></category>

		<guid isPermaLink="false">http://blog.richardknop.com/?p=242</guid>
		<description><![CDATA[Twitter is one of the fastest growing social networks around and many people want to integrate it (in different ways) on their website. Fortunately, the Twitter API is well documented and easy to use (it is based on the HTTP protocol and everything is done through GET or POST requests). PHP&#8217;s cURL extension is an [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://twitter.com/">Twitter</a> is one of the fastest growing social networks around and many people want to integrate it (in different ways) on their website. Fortunately, the <a href="http://apiwiki.twitter.com/">Twitter API</a> is well documented and easy to use (it is based on the HTTP protocol and everything is done through GET  or POST requests).</p>
<p>PHP&#8217;s <a href="http://sk.php.net/curl">cURL</a> extension is an ideal tool for working with the twitter API. I will show you few examples of most common twitter related tasks.</p>
<h2>Getting recent statuses from an authenticating user</h2>
<p>URI: <em>http://twitter.com/statuses/user_timeline.format</em></p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="re1">$username</span> <span class="sy0">=</span> <span class="st0">&#39;your_username&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$password</span> <span class="sy0">=</span> <span class="st0">&#39;your_password&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// initialize a cURL session</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$ch</span> <span class="sy0">=</span> curl_init<span class="br0">&#40;</span><span class="st0">&#39;http://twitter.com/statuses/user_timeline.xml?screen_name=&#39;</span> <span class="sy0">.</span> <span class="re1">$username</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// wait 2 miliseconds for connection</span></div>
</li>
<li class="li1">
<div class="de1">curl_setopt<span class="br0">&#40;</span><span class="re1">$ch</span><span class="sy0">,</span> CURLOPT_CONNECTTIMEOUT<span class="sy0">,</span> <span class="nu0">2</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// do output to curl_exec()</span></div>
</li>
<li class="li1">
<div class="de1">curl_setopt<span class="br0">&#40;</span><span class="re1">$ch</span><span class="sy0">,</span> CURLOPT_RETURNTRANSFER<span class="sy0">,</span> <span class="nu0">1</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// username and password</span></div>
</li>
<li class="li1">
<div class="de1">curl_setopt<span class="br0">&#40;</span><span class="re1">$ch</span><span class="sy0">,</span> CURLOPT_USERPWD<span class="sy0">,</span> <span class="re1">$username</span> <span class="sy0">.</span> <span class="st0">&#39;:&#39;</span> <span class="sy0">.</span> <span class="re1">$password</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// execute the cURL session and use its output to create a new SimpleXML object</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$xml</span> <span class="sy0">=</span> <span class="kw2">new</span> SimpleXMLElement<span class="br0">&#40;</span>curl_exec<span class="br0">&#40;</span><span class="re1">$ch</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// close the session to free up system resources</span></div>
</li>
<li class="li1">
<div class="de1">curl_close<span class="br0">&#40;</span><span class="re1">$ch</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
<p>The $xml object contains the last 20 statuses of the specified user. To print the last status:</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="kw3">echo</span> <span class="re1">$xml</span><span class="sy0">-&gt;</span><span class="me1">status</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="sy0">-&gt;</span><span class="me1">text</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
<p>Or you can iterate through the object and print all statuses:</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">foreach</span> <span class="br0">&#40;</span><span class="re1">$xml</span><span class="sy0">-&gt;</span><span class="me1">status</span> <span class="kw1">as</span> <span class="re1">$status</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw3">echo</span> <span class="re1">$status</span><span class="sy0">-&gt;</span><span class="me1">text</span><span class="sy0">,</span> <span class="st0">&#39;&lt;br /&gt;&#39;</span><span class="sy0">,</span> <span class="st0">&quot;<span class="es0">\n</span>&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<h2>Posting a status</h2>
<p>URI: <em>http://twitter.com/statuses/update.format</em></p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="re1">$username</span> <span class="sy0">=</span> <span class="st0">&#39;your_username&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$password</span> <span class="sy0">=</span> <span class="st0">&#39;your_password&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$status</span> <span class="sy0">=</span> <span class="st0">&#39;your status (max 140 characters)&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// initialize a cURL session</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$ch</span> <span class="sy0">=</span> curl_init<span class="br0">&#40;</span><span class="st0">&#39;http://twitter.com/statuses/update.xml&#39;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// wait 2 miliseconds for connection</span></div>
</li>
<li class="li1">
<div class="de1">curl_setopt<span class="br0">&#40;</span><span class="re1">$ch</span><span class="sy0">,</span> CURLOPT_CONNECTTIMEOUT<span class="sy0">,</span> <span class="nu0">2</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// do not output to curl_exec()</span></div>
</li>
<li class="li1">
<div class="de1">curl_setopt<span class="br0">&#40;</span><span class="re1">$ch</span><span class="sy0">,</span> CURLOPT_RETURNTRANSFER<span class="sy0">,</span> <span class="nu0">0</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// do a regular HTTP POST</span></div>
</li>
<li class="li1">
<div class="de1">curl_setopt<span class="br0">&#40;</span><span class="re1">$ch</span><span class="sy0">,</span> CURLOPT_POST<span class="sy0">,</span> <span class="nu0">1</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// HTTP POST data</span></div>
</li>
<li class="li1">
<div class="de1">curl_setopt<span class="br0">&#40;</span><span class="re1">$ch</span><span class="sy0">,</span> CURLOPT_POSTFIELDS<span class="sy0">,</span> <span class="st0">&#39;status=&#39;</span> <span class="sy0">.</span> <span class="re1">$status</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// username and password</span></div>
</li>
<li class="li1">
<div class="de1">curl_setopt<span class="br0">&#40;</span><span class="re1">$ch</span><span class="sy0">,</span> CURLOPT_USERPWD<span class="sy0">,</span> <span class="re1">$username</span> <span class="sy0">.</span> <span class="st0">&#39;:&#39;</span> <span class="sy0">.</span> <span class="re1">$password</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// execute the cURL session</span></div>
</li>
<li class="li1">
<div class="de1">curl_exec<span class="br0">&#40;</span><span class="re1">$ch</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// close the session to free up system resources</span></div>
</li>
<li class="li1">
<div class="de1">curl_close<span class="br0">&#40;</span><span class="re1">$ch</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
<h2>Deleting a status</h2>
<p>URI: <em>http://twitter.com/statuses/destroy/id.format</em></p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="re1">$username</span> <span class="sy0">=</span> <span class="st0">&#39;your_username&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$password</span> <span class="sy0">=</span> <span class="st0">&#39;your_password&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$id</span> <span class="sy0">=</span> <span class="st0">&#39;id of the status you want to delete&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// initialize a cURL session</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$ch</span> <span class="sy0">=</span> curl_init<span class="br0">&#40;</span><span class="st0">&#39;http://twitter.com/statuses/destroy/&#39;</span> <span class="sy0">.</span> <span class="re1">$id</span> <span class="sy0">.</span> <span class="st0">&#39;.xml&#39;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// wait 2 miliseconds for connection</span></div>
</li>
<li class="li1">
<div class="de1">curl_setopt<span class="br0">&#40;</span><span class="re1">$ch</span><span class="sy0">,</span> CURLOPT_CONNECTTIMEOUT<span class="sy0">,</span> <span class="nu0">2</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// do not output to curl_exec()</span></div>
</li>
<li class="li1">
<div class="de1">curl_setopt<span class="br0">&#40;</span><span class="re1">$ch</span><span class="sy0">,</span> CURLOPT_RETURNTRANSFER<span class="sy0">,</span> <span class="nu0">0</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// do a regular HTTP POST</span></div>
</li>
<li class="li1">
<div class="de1">curl_setopt<span class="br0">&#40;</span><span class="re1">$ch</span><span class="sy0">,</span> CURLOPT_POST<span class="sy0">,</span> <span class="nu0">1</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// username and password</span></div>
</li>
<li class="li1">
<div class="de1">curl_setopt<span class="br0">&#40;</span><span class="re1">$ch</span><span class="sy0">,</span> CURLOPT_USERPWD<span class="sy0">,</span> <span class="re1">$username</span> <span class="sy0">.</span> <span class="st0">&#39;:&#39;</span> <span class="sy0">.</span> <span class="re1">$password</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// execute the cURL session</span></div>
</li>
<li class="li1">
<div class="de1">curl_exec<span class="br0">&#40;</span><span class="re1">$ch</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// close the session to free up system resources</span></div>
</li>
<li class="li1">
<div class="de1">curl_close<span class="br0">&#40;</span><span class="re1">$ch</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.richardknop.com/2009/05/working-with-twitter-api-in-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

