Once my previous change is made, I run the code below.  It's a simple
example of connecting to the Google server using username/password
authentication and retrieving the list of calendars.

    require_once 'Zend/Loader.php';
    Zend_Loader::loadClass('Zend_Gdata');
    Zend_Loader::loadClass('Zend_Gdata_AuthSub');
    Zend_Loader::loadClass('Zend_Gdata_ClientLogin');
    Zend_Loader::loadClass('Zend_Gdata_Calendar');
    Zend_Loader::loadClass('Zend_Http_Client');

    $service = Zend_Gdata_Calendar::AUTH_SERVICE_NAME;
    $user = '[EMAIL PROTECTED]';
    $pass = 'XXXXXXX';

    $config = array(
    'adapter'    => 'Zend_Http_Client_Adapter_Proxy',
    'proxy_host' => 'proxy.shr.secureserver.net',
    'proxy_port' => 3128
    );

    try {
    $http = new Zend_Http_Client();
    $http->setConfig($config);
    $client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass,
$service, $http);
    var_dump($client);
    $http->setConfig($config);

    $gdataCal = new Zend_Gdata_Calendar($client);
    $calFeed = $gdataCal->getCalendarListFeed();
    foreach ($calFeed as $calendar) {
      echo '<li>' . $calendar->title() . '</li>';
    }
    } catch (Zend_Exception $e) {
    var_dump($e);
    }

When I run this it fails and dumps the error.  I'll cut to the chase
and show you what I sent...

    POST https://www.google.com:443/accounts/ClientLogin HTTP/1.1
    Host: www.google.com
    Connection: close
    User-agent: Zend-ZendFramework Zend_Framework_Gdata/1.0.0RC2
    Content-type: application/x-www-form-urlencoded
    Content-length: 115
accountType=HOSTED_OR_GOOGLE&Email=crazyatlantaguy
%40gmail.com&Passwd=XXXXXX&service=cl&source=Zend-ZendFramework

...and the dump containing what I received in return...

    ["last_response:protected"]=>
      object(Zend_Http_Response)#5 (5) {
        ["version:protected"]=>
        string(3) "1.0"
        ["code:protected"]=>
        int(501)
        ["message:protected"]=>
        string(15) "Not Implemented"
        ["headers:protected"]=>
        array(8) {
          ["Server"]=>
          string(18) "squid/2.6.STABLE12"
          ["Date"]=>
          string(29) "Thu, 14 Jun 2007 12:29:47 GMT"
          ["Content-type"]=>
          string(9) "text/html"
          ["Content-length"]=>
          string(4) "1093"
          ["Expires"]=>
          string(29) "Thu, 14 Jun 2007 12:29:47 GMT"
          ["X-squid-error"]=>
          string(15) "ERR_UNSUP_REQ 0"
          ["X-cache"]=>
          string(27) "MISS from wc02.shr.phx3.gdg"
          ["Proxy-connection"]=>
          string(5) "close"
        }
        ["body:protected"]=>
        string(1093) "

ERROR
The requested URL could not be retrieved
While trying to retrieve the URL: https://www.google.com/accounts/ClientLogin
The following error was encountered:
    * Unsupported Request Method and Protocol
Squid does not support all request methods for all access protocols.
For example, you can not POST a Gopher request.
Your cache administrator is webmaster.
Generated Thu, 14 Jun 2007 12:29:47 GMT by wc02.shr.phx3.gdg (squid/
2.6.STABLE12)
"}}


This is this reason that I contacted GoDaddy and was told that their
proxy does not support POST over outgoing SSL.  Which I agree does not
make any sense.  How you can you just ban key parts of HTTP?   I
attempted to modify the ClientLogin code further to make this
authentication request us GET instead of POST.  Although I believe I
made the right change (it works as a URL the browser) I still receive
this message from the proxy.




On Jun 14, 9:12 am, CrazyAtlantaGuy <[EMAIL PROTECTED]> wrote:
> First - A suggested change for google's implementation of the
> framework in PHP.
>
> Within the file \Zend\GData\ClientLogin.php there are conditions while
> creating the client HTTP object which can cause it to fail without
> throwing an exception.  This is why people have discussed their
> $client variable being null.  There is an error here, we just don't
> see it because of a bug which causes it to return null instead.
>
> To fix this in the most recent release of Zend, RC2, modify line 142
> so that instead of reading:
>         } elseif ($response->getStatus() == 403) {
> it reads
>         } else {
>
> Now when an unexpected error code is returned an exception is thrown.
> Previously exceptions were only thrown for 403 errors - not too
> helpful in our case.
>
> On Jun 14, 8:20 am, "[EMAIL PROTECTED]" <[EMAIL PROTECTED]> wrote:
>
> > My ultimate goal is quite simple, all I really want to do is read my
> > event data so I can generate an RSS feed that can be fed into tumblr.
>
> > I called godaddy, just on the off chance they'd be able to tell me
> > problems I'd encounter, and got a lot of "We don't help with coding"
> > and then when I just asked to make sure if it was even possible on
> > their shared hosting they told me it was, but that it'd be difficult.
>
> > Anyway using the help from this thread, along with the manual I
> > crafted:
>
> > $config = array(
> >                 'adapter'    => 'Zend_Http_Client_Adapter_Proxy',
> >                 'proxy_host' => 'proxy.shr.secureserver.net',
> >                 'proxy_port' => 3128
> >         );
> >         // Instantiate a client object
> > $clientp = new Zend_Http_Client($myCalendar, $config);
> > $client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, 'cl',
> > $clientp);
> > $service = new Zend_Gdata_Calendar($client);
>
> > try {
> >     $listFeed= $service->getCalendarListFeed();} catch 
> > (Zend_Gdata_App_Exception $e) {
>
> >     echo "Error: " . $e->getResponse();
>
> > }
>
> > I get the Error every time, and I did some other testing and the
> > $client variable is null.  I also am not setting $myCalendar because I
> > wasn't entirely clear and what that should be.  I tried putting names
> > of my calendars in there, which those caused invalid schema errors, I
> > also tried the addresses of my feeds, which didn't throw errors, but
> > didn't improve the situation.
>
> > I also tried getting events instead of calendars with the same
> > results.  At this point I'm not sure if it's an error with goDaddy, or
> > just my not understanding how to use the API.
> > On Jun 14, 1:08 am, "Ryan Boyd (Google)" <[EMAIL PROTECTED]> wrote:
>
> > > Hi CrazyAtlantaGuy,
>
> > > That seems a bit odd that POST would not be allowed, as it's a common
> > > method of HTTP communication-- used in many web sites for form data
> > > and also used by lots of different APIs.
>
> > > What operations were you performing at the time you received the
> > > timeout errors?  Was it adding new entries, or updating/deleting
> > > entries?  If the latter, the PUT/DELETE methods are used by default.
> > > These methods are less common and much more likely to be blocked by a
> > > proxy server.  Fortunately, there is an option in Zend_Gdata_Calendar
> > > (via way of Zend_Gdata_App) to indicate that you want POST requests to
> > > be used in place of PUTs/DELETEs.  This is set by calling
> > > $calendarService->setHttpMethodOverride(true);  Setting this property
> > > tells the library to sent HTTP POSTS but add a 'X-Http-Method-
> > > Override' header indicating that PUT or DELETE was the intentioned
> > > method.
>
> > > If it really is POST being disallowed, then the only other major
> > > remaining methods are GET and HEAD.  It is highly unlikely that any
> > > insert/update/delete operations will ever work with Google data APIs
> > > using these HTTP verbs as GET and HEAD requests should not have any
> > > side-effects based upon the HTTP spec.
>
> > > Also, for future debugging-- any HTTP errors should throw an instance
> > > of Zend_Gdata_App_HttpException.  This provides a method called
> > > getResponse() which returns the Zend_Http_Response object.  Just
> > > var_dump this and you should have any information you want about the
> > > server error.
>
> > > Good luck in getting this resolved!
>
> > > Cheers,
> > > -Ryan
>
> > > On Jun 13, 5:32 pm, CrazyAtlantaGuy <[EMAIL PROTECTED]> wrote:
>
> > > > I've been working on this recently too and have run into the same
> > > > troubles.  I was able to avoid the timeout error by using the proxy -
> > > > however now that I can connect to the proxy the communications with
> > > > google still fails.  Adding lots of print lines to the Zend code I
> > > > have found that the proxy is sending back an HTTP error message,"501
> > > > Not Implemented."  After several emails with GoDaddy support I've been
> > > > told "it appears that our hosting does not support the 'POST' option
> > > > when using our proxy service".  The Google's PHP code does all of it's
> > > > communications by POSTs, which means that as things stand it using the
> > > > Zend Framework as-is to communicate with Google just won't work.
>
> > > > It would be really nice if GoDaddy realized having the proxy caused
> > > > their customers a real headache and just got ride of it.  The only
> > > > other solutions, so I see it, is to rewrite parts of the Google PHP so
> > > > that it no longer sends and retrieves using POSTs.  Well, there's
> > > > always the option of finding another host, which may be the easier of
> > > > the two.
>
> > > > Any other ideas or solutions would be most appreciated.
>
> > > > On Jun 13, 3:41 pm, "[EMAIL PROTECTED]" <[EMAIL PROTECTED]> wrote:
>
> > > > > I'm trying to do something similar, and the code you provided got me
> > > > > to stop having the connection error, however when I use the code
> > > > > similar to yours above, only putting in my user and pass, I end up
> > > > > getting a null client returned.
>
> > > > > I'm also unsure what the $myCalendar variable should be set to.... or
> > > > > if I need to call some other kind of function before I can do this.
>
> > > > > On Jun 8, 1:00 pm, Erik <[EMAIL PROTECTED]> wrote:
>
> > > > > > Hi, this is not helping. However, In theGodaddyhelp I found out 
> > > > > > thatGodaddyuses a proxy for the google checkout application. So I 
> > > > > > tried
> > > > > > to use this proxy settings and it seems to be working.
> > > > > > This is what I used:
>
> > > > > >         $config = array(
> > > > > >                 'adapter'    => 'Zend_Http_Client_Adapter_Proxy',
> > > > > >                 'proxy_host' => 'proxy.shr.secureserver.net',
> > > > > >                 'proxy_port' => 3128
> > > > > >         );
> > > > > >         // Instantiate a client object
> > > > > >         $clientp = new Zend_Http_Client($myCalendar, $config);
> > > > > >         $client = Zend_Gdata_ClientLogin::getHttpClient($user, 
> > > > > > $pass,
> > > > > > 'cl', $clientp);
>
> > > > > > On 8 jun, 19:19, "Lane LiaBraaten (Google)" <[EMAIL PROTECTED]>
> > > > > > wrote:
>
> > > > > > > Hi Erik,
>
> > > > > > > cederstrom posted this link in another 
> > > > > > > thread:http://www.nabble.com/SSLv2-error-when-using-Gdata-API-t2960985s16154...
>
> > > > > > > Let us know if that solves your problem,
> > > > > > > Lane
>
> > > > > > > On Jun 8, 7:54 am, Erik <[EMAIL PROTECTED]> wrote:
>
> > > > > > > > When I try to authenticate I get the following error:
>
> > > > > > > > Fatal error: Uncaught exception 'Zend_Gdata_HttpException' with
> > > > > > > > message 'Unable to Connect to sslv2://www.google.com:443. Error 
> > > > > > > > #110:
> > > > > > > > Connection timed out' in 
> > > > > > > > /home/content/d/i/s/dispuutjupiter/html/Zend/
> > > > > > > > Gdata/AuthSub.php:106 Stack trace: #0
>
> > > > > > > > My site is hosted atgodaddyand I'm running PHP Version 5.1.4. 
> > > > > > > > To me
> > > > > > > > it seems that the problem is located in the ClientLogin.php 
> > > > > > > > file.
>
> > > > > > > > Can anyone help me to get this working?


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Google Calendar Data API" group.
To post to this group, send email to 
[email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/google-calendar-help-dataapi?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to