Hey Eric,

Sorry that help article didn't answer your question. Can you provide the
actual HTTP request being made and the HTTP response you get back? We're
interested in the response body content in particular.

Also, remember we disable basic authentication on August 16th so you want to
switch to that method of authentication now.

Matt

On Thu, Jul 15, 2010 at 12:46 PM, Eric Mortensen <emort...@gmail.com> wrote:

> Unfortunately not.  Do you have anything else that might explain it?
>
>
> On Thu, Jul 15, 2010 at 1:48 PM, Matt Harris <thematthar...@twitter.com>wrote:
>
>> Hi Eric,
>>
>> In addition to the API Rate Limits there are general usage limits which
>> apply to all of Twitter, including the website. These limits restrict
>> various actions including the number of updates that can be posted per day.
>>
>> You can read more about Twitter Limits on our help website:
>> http://support.twitter.com/forums/10711/entries/15364
>>
>> Hope that answers your question,
>> Matt
>>
>>
>> On Thu, Jul 15, 2010 at 10:11 AM, Eric <emort...@gmail.com> wrote:
>>
>>> It appears that I am hitting a 150 post rate limit when I use the
>>> statuses/update.xml api to update a twitter account eventhough I
>>> should not have this limit doing only a post. Is there a reason why?
>>> Here is the code I am using from oracle to do this:
>>>
>>> create or replace PACKAGE BODY tweet
>>> AS
>>>
>>>  twit_host VARCHAR2(255) := 'api.twitter.com';
>>>  twit_protocol VARCHAR2(10) := 'http://';
>>>
>>>  -- URL for status updates
>>>  tweet_url VARCHAR2(255) := '/1/statuses/update.xml';
>>>
>>>
>>>  FUNCTION tweet
>>>    (
>>>      p_user IN VARCHAR2,
>>>      p_pwd IN VARCHAR2,
>>>      p_string IN VARCHAR2,
>>>      p_proxy_url IN VARCHAR2 DEFAULT NULL,
>>>      p_no_domains IN VARCHAR2 DEFAULT NULL )
>>>    RETURN BOOLEAN
>>>  AS
>>>    v_req   UTL_HTTP.REQ;  -- HTTP request ID
>>>    v_resp  UTL_HTTP.RESP;  -- HTTP response ID
>>>    v_value VARCHAR2(1024); -- HTTP response data
>>>    v_status VARCHAR2(160);   -- Status of the request
>>>    v_call VARCHAR2(2000);  -- The request URL
>>>    v_log_value varchar2(4000) := 'status';
>>>  BEGIN
>>>
>>>    -- Twitter update url
>>>    v_call := twit_protocol ||
>>>              twit_host ||
>>>              tweet_url;
>>>
>>>    -- encoded status string
>>>    v_status := utl_url.escape(
>>>      url => 'status=' || SUBSTR( short_url.encode_text(p_string) ,
>>> 1,140));
>>>
>>>    -- Authenticate via proxy
>>>    -- Proxy string looks like 'http://username:passw...@proxy.com'
>>>    -- p_no_domains is a list of domains not to use the proxy for
>>>    -- These settings override the defaults that are configured at the
>>> database level
>>>    IF p_proxy_url IS NOT NULL
>>>    THEN
>>>      Utl_Http.set_proxy (
>>>        proxy                 => p_proxy_url,
>>>        no_proxy_domains      => p_no_domains
>>>        );
>>>    END IF;
>>>
>>>    -- Has to be a POST for status update
>>>    v_req := UTL_HTTP.BEGIN_REQUEST(
>>>          url => v_call,
>>>      method =>'POST');
>>>
>>>    -- Pretend we're a moz browser
>>>    UTL_HTTP.SET_HEADER(
>>>      r => v_req,
>>>      name => 'User-Agent',
>>>      value => 'Mozilla/4.0');
>>>
>>>    -- Pretend we're coming from an html form
>>>    UTL_HTTP.SET_HEADER(
>>>      r => v_req,
>>>      name => 'Content-Type',
>>>      value => 'application/x-www-form-urlencoded');
>>>
>>>    -- Set the length of the input
>>>    UTL_HTTP.SET_HEADER(
>>>      r => v_req,
>>>      name => 'Content-Length',
>>>      value => length(v_status));
>>>
>>>    -- authenticate with twitter user/pass
>>>    UTL_HTTP.SET_AUTHENTICATION(
>>>      r => v_req,
>>>      username => p_user,
>>>      password => p_pwd );
>>>
>>>    -- Send the update
>>>    UTL_HTTP.WRITE_TEXT(
>>>      r => v_req,
>>>      data => v_status );
>>>
>>>    UTL_HTTP.end_request (v_req);
>>>
>>>    RETURN TRUE;
>>>
>>>  EXCEPTION
>>>    -- normal exception when reading the response
>>>    WHEN UTL_HTTP.END_OF_BODY THEN
>>>            UTL_HTTP.end_request (v_req);
>>>          RETURN TRUE;
>>>
>>>    -- Anything else and send false
>>>    WHEN OTHERS THEN
>>>      UTL_HTTP.end_request (v_req);
>>>      Dbms_Output.Put_Line ( 'Request_Failed: ' ||
>>> Utl_Http.Get_Detailed_Sqlerrm );
>>>      Dbms_Output.Put_Line ( 'Ora: ' || Sqlerrm );
>>>         RETURN FALSE;
>>>
>>>  END;
>>>
>>> END tweet;
>>>
>>>
>>>
>>> Thanks
>>>
>>
>>
>>
>> --
>>
>>
>> Matt Harris
>> Developer Advocate, Twitter
>> http://twitter.com/themattharris
>>
>
>


-- 


Matt Harris
Developer Advocate, Twitter
http://twitter.com/themattharris

Reply via email to