Hi

I am using Curl method and getting below error

*Error  :*
              /direct_messages/new.xml
              This method requires a POST.

*ON URL :*
                http://www.homefindingcommunity.com/

Below is my script. This script works fine on my local server as well as
other few websites e.g. redcounty.com, greenfaucet.com but it won't work on
homefindingcommunity.com

<?php
///////////////////////////////////////////

$t= new twitter();
 $t->username='username';
 $t->password='password';
 //$res = $t->update('i am testing twitter.php');
 $message = urlencode("test direct Message #GOP HFC");
$res = $t->sendDirectMessage('thewebdevcenter',$message);
 if($res[http_code]=='403')
 {
  'You cannot send messages to users who are not following you';
 }

 if($res===false){
   echo "ERROR<hr/>";
     echo "<pre>";
   print_r($t->resultthis);
     echo "</pre>";
 }else{
   echo "SUCCESS<hr/>Status Posted";
 }


//////////////////////////////////////////

class twitter{
    var $username='';
    var $password='';
    var $user_agent='';

    ///////////////
    //
    // I don't know if these headers have become standards yet
    // but I would suggest using them.
    // more discussion here.
    // http://tinyurl.com/3xtx66
    //
    ///////////////
    var $headers=array('X-Twitter-Client: ',
                                            'X-Twitter-Client-Version: ',
                                            'X-Twitter-Client-URL: ');

    var $responseInfo=array();


    function twitter(){}





    /////////////////////////////////////////
    //
    // Twitter API calls
    //
    // $this->update($status)
    // $this->publicTimeline($sinceid=false)
    // $this->friendsTimeline($id=false,$since=false)
    // $this->userTimeline($id=false,$count=20,$since=false)
    // $this->showStatus($id)
    // $this->friends($id=false)
    // $this->followers()
    // $this->featured()
    // $this->showUser($id)
    // $this->directMessages($since=false)
    // $this->sendDirectMessage($user,$text)
    //
    // If SimpleXMLElement exists the results will be returned as a
SimpleXMLElement
    // otherwise the raw XML will be returned for a successful request.  If
the request
    // fails a FALSE will be returned.
    //
    //
    /////////////////////////////////////////


    // Updates the authenticating user's status.
    // Requires the status parameter specified below.
    //
    // status. (string) Required.  The text of your status update.  Must not
be
    //                             more than 160 characters and should not
be
    //                             more than 140 characters to ensure
optimal display.
    //
    function update($status){
        $request = 'http://twitter.com/statuses/update.xml';
        $postargs = 'status='.urlencode($status);
        return $this->process($request,$postargs);
    }
    function twitter_authenticate($username,$password)
    {
        $this->username=$username;
        $this->password=$password;
        $request = 'http://twitter.com/account/verify_credentials.xml';
        $auth_data =  $this->process($request);
        if($auth_data===false)
        {
         return 'Error';
        }
        else
        {
            $get_username =  $auth_data->screen_name;
            $retrun_array = array('1',$get_username);
            return $retrun_array;
        }

    }

    // Returns the 20 most recent statuses from non-protected users who have
    // set a custom user icon.  Does not require authentication.
    //
    // sinceid. (int) Optional.  Returns only public statuses with an ID
greater
    //                           than (that is, more recent than) the
specified ID.
    //
    function publicTimeline($sinceid=false){
        $qs='';
        if($sinceid!==false)
            $qs='?since_id='.intval($sinceid);
        $request =
'http://twitter.com/statuses/public_timeline.xml'.$qs<http://twitter.com/statuses/public_timeline.xml%27.$qs>
;
        return $this->process($request);
    }

    // Returns the 20 most recent statuses posted in the last 24 hours from
the
    // authenticating user and that user's friends.  It's also possible to
request
    // another user's friends_timeline via the id parameter below.
    //
    // id. (string OR int) Optional.  Specifies the ID or screen name of the
user for whom
    //                                to return the friends_timeline. (set
to false if you
    //                                want to use authenticated user).
    // since. (HTTP-formatted date) Optional.  Narrows the returned results
to just those
    //                                         statuses created after the
specified date.
    //
    function friendsTimeline($id=false,$since=false){
        $qs='';
        if($since!==false)
            $qs='?since='.urlencode($since);

        if($id===false)
            $request = 'http://twitter.com
/statuses/friends_timeline.xml'.$qs<http://twitter.com/statuses/friends_timeline.xml%27.$qs>
;
        else
            $request = 'http://twitter.com
/statuses/friends_timeline/'.urlencode($id).'.xml'.$qs<http://twitter.com/statuses/friends_timeline/%27.urlencode%28$id%29.%27.xml%27.$qs>
;

        return $this->process($request);
    }

    // Returns the 20 most recent statuses posted in the last 24 hours from
the
    // authenticating user.  It's also possible to request another user's
timeline
    // via the id parameter below.
    //
    // id. (string OR int) Optional.  Specifies the ID or screen name of the
user for whom
    //                                to return the user_timeline.
    // count. (int) Optional.  Specifies the number of statuses to
retrieve.  May not be
    //                         greater than 20 for performance purposes.
    // since. (HTTP-formatted date) Optional.  Narrows the returned results
to just those
    //                                         statuses created after the
specified date.
    //
    function userTimeline($id=false,$count=20,$since=false){
        $qs='?count='.intval($count);
        if($since!==false)
            $qs .= '&since='.urlencode($since);

        if($id===false)
            $request =
'http://twitter.com/statuses/user_timeline.xml'.$qs<http://twitter.com/statuses/user_timeline.xml%27.$qs>
;
        else
            $request = 'http://twitter.com
/statuses/user_timeline/'.urlencode($id).'.xml'.$qs<http://twitter.com/statuses/user_timeline/%27.urlencode%28$id%29.%27.xml%27.$qs>
;

        return $this->process($request);
    }

    // Returns a single status, specified by the id parameter below.  The
status's author
    // will be returned inline.
    //
    // id. (int) Required.  Returns status of the specified ID.
    //
    function showStatus($id){
        $request =
'http://twitter.com/statuses/show/'.intval($id).'.xml<http://twitter.com/statuses/show/%27.intval%28$id%29.%27.xml>
';
        return $this->process($request);
    }
    // Returns the authenticating user's friends, each with current status
inline.  It's
    // also possible to request another user's friends list via the id
parameter below.
    //
    // id. (string OR int) Optional.  The ID or screen name of the user for
whom to request
    //                                a list of friends.
    //
    function friends($id=false){
        if($id===false)
            $request = 'http://twitter.com/statuses/friends.xml';
        else
            $request = 'http://twitter.com
/statuses/friends/'.urlencode($id).'.xml<http://twitter.com/statuses/friends/%27.urlencode%28$id%29.%27.xml>
';
        return $this->process($request);
    }

    // Returns the authenticating user's followers, each with current status
inline.
    //
    function followers(){
        $request = 'http://twitter.com/statuses/followers.xml';
        return $this->process($request);
    }

    // Returns a list of the users currently featured on the site with their
current statuses inline.
    function featured(){
        $request = 'http://twitter.com/statuses/featured.xml';
        return $this->process($request);
    }

    // Returns extended information of a given user, specified by ID or
screen name as per the required
    // id parameter below.  This information includes design settings, so
third party developers can theme
    // their widgets according to a given user's preferences.
    //
    // id. (string OR int) Required.  The ID or screen name of a user.
    //
    function showUser($id){
        $request =
'http://twitter.com/users/show/'.urlencode($id).'.xml<http://twitter.com/users/show/%27.urlencode%28$id%29.%27.xml>
';
        return $this->process($request);
    }

    // Returns a list of the direct messages sent to the authenticating
user.
    //
    // since. (HTTP-formatted date) Optional.  Narrows the resulting list of
direct messages to just those
    //                                         sent after the specified
date.
    //
    function directMessages($since=false){
        $qs='';
        if($since!==false)
            $qs='?since='.urlencode($since);
        $request =
'http://twitter.com/direct_messages.xml'.$qs<http://twitter.com/direct_messages.xml%27.$qs>
;
        return $this->process($request);
    }

    // Sends a new direct message to the specified user from the
authenticating user.  Requires both the user
    // and text parameters below.
    //
    // user. (string OR int) Required.  The ID or screen name of the
recipient user.
    // text. (string) Required.  The text of your direct message.  Be sure
to URL encode as necessary, and keep
    //                           it under 140 characters.
    //
    function sendDirectMessage($user,$text){
        $request = 'http://twitter.com/direct_messages/new.xml';
        $postargs = 'user='.urlencode($user).'&text='.urlencode($text);
        return $this->process($request,$postargs);
    }
     function sendnotificationsfollow($user){
        $request = 'http://twitter.com/notifications/follow.xml';
        $postargs = 'screen_name='.urlencode($user);
        return $this->process($request,$postargs);
    }





    // internal function where all the juicy curl fun takes place
    // this should not be called by anything external unless you are
    // doing something else completely then knock youself out.
    function process($url,$postargs=false){

        $ch = curl_init($url);

        if($postargs !== false){
            curl_setopt ($ch, CURLOPT_POST, true);
            curl_setopt ($ch, CURLOPT_POSTFIELDS, $postargs);
        }

        if($this->username !== false && $this->password !== false)
            curl_setopt($ch, CURLOPT_USERPWD,
$this->username.':'.$this->password);

        curl_setopt($ch, CURLOPT_VERBOSE, 1);
        curl_setopt($ch, CURLOPT_NOBODY, 0);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_USERAGENT, $this->user_agent);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $this->headers);

        $response = curl_exec($ch);
        $this->resultthis=$response;
       //echo $response;
        $this->responseInfo=curl_getinfo($ch);
        curl_close($ch);


        if(intval($this->responseInfo['http_code'])==200)
        {
            if(class_exists('SimpleXMLElement'))
            {
                $xml = new SimpleXMLElement($response);
                return $xml;
            }
            else
            {
                return $response;
            }
        }
        else
        {
            return false;
        }
    }
}


?>

Please help me how to solve this problem


Regards
Mandakini

Reply via email to