Hi Alain

I have the same problem,

my request is like this(I replaced my domain with domain.com):
requestData:
Array
(
    [method] => PUT
    [url] => 
https://www.google.com/m8/feeds/profiles/domain/domain.com/full/kevin.xiao
    [data] => <atom:entry xmlns:atom="http://www.w3.org/2005/
Atom"><edited xmlns="http://www.w3.org/2007/
app">2011-06-07T08:30:22.058Z</edited><email xmlns="http://
schemas.google.com/g/2005" rel="http://schemas.google.com/g/
2005#other" address="[email protected]"/><email xmlns="http://
schemas.google.com/g/2005" rel="http://schemas.google.com/g/
2005#other" address="[email protected]" primary="true"/><email
xmlns="http://schemas.google.com/g/2005"; rel="http://
schemas.google.com/g/2005#other" address="[email protected]"/><email
xmlns="http://schemas.google.com/g/2005"; rel="http://
schemas.google.com/g/2005#other" address="[email protected]"/><email
xmlns="http://schemas.google.com/g/2005"; rel="http://
schemas.google.com/g/2005#other" address="[email protected]"/><email
xmlns="http://schemas.google.com/g/2005"; rel="http://
schemas.google.com/g/2005#other" address="[email protected]"/
><email xmlns="http://schemas.google.com/g/2005"; rel="http://
schemas.google.com/g/2005#other" address="[email protected]"/
><atom:category term="http://schemas.google.com/contact/2008#profile";
scheme="http://schemas.google.com/g/2005#kind"/><atom:id>http://
www.google.com/m8/feeds/profiles/domain/domain.com/full/kevin.xiao</atom:id><atom:link
href="https://www.google.com/m8/feeds/profiles/domain/domain.com/full/
kevin.xiao" rel="self" type="application/atom+xml"/><atom:link
href="https://www.google.com/m8/feeds/profiles/domain/domain.com/full/
kevin.xiao" rel="edit" type="application/atom+xml"/><atom:title
type="text">Kevin Xiao</
atom:title><atom:updated>2011-06-07T08:30:22.058Z</atom:updated></
atom:entry>
    [headers] => Array
        (
            [If-Match] => "CxIFFhhfQCp7ImBt"
            [x-http-method-override] => PUT
        )

    [contentType] => application/atom+xml
)


but I get this error:
Fatal error: Uncaught exception 'Zend_Gdata_App_HttpException' with
message 'Expected response code 200, got 500
No ETag attribute found on an update request'

Could you help me to figure this out?

Thank you.


On 6月2日, 上午1时20分, Alain Vongsouvanh <[email protected]> wrote:
> Hello Diogo,
>
> Can you try to capture the request that is sent to the Contacts API and make
> sure that the "If-Match" header is properly set? If you are testing this
> script in a browser, you might be able to get the information by using
> the developer
> tools <http://code.google.com/chrome/devtools/docs/network.html> from Google
> Chrome.
>
> Best,
> Alain
>
>
>
>
>
>
>
>
>
> On Tue, May 31, 2011 at 9:44 AM, Diogo Salazar <[email protected]> wrote:
> > Hi Alain!
>
> > Thank you very much for replying!!
> > Although the solution you've presented is the recommended, I haven't
> > had any success in using it... or not using an etag at all.
>
> > It seems that no matter the information I set in the headers, the
> > error it gives me is the same.
>
> > This is the output of "$xml->saveXML()" at the end of the process (the
> > data has already been changed for the update):
>
> > <?xml version="1.0"?> <atom:entry xmlns:atom="http://www.w3.org/2005/
> > Atom"><name xmlns="http://schemas.google.com/g/2005";><fullName>Diogo
> > Salazar - Test</fullName><givenName>Diogo</
> > givenName><familyName>Salazar - Test</familyName></name><email
> > xmlns="http://schemas.google.com/g/2005"; rel="http://
> > schemas.google.com/g/2005#other" address="[email protected]"
> > primary="true"/><phoneNumber xmlns="http://schemas.google.com/g/2005";
> > rel="http://schemas.google.com/g/2005#work";>11 53292700</
> > phoneNumber><atom:category term="http://schemas.google.com/contact/
> > 2008#profile" scheme="http://schemas.google.com/g/2005#kind"/
> > ><atom:id>http://www.google.com/m8/feeds/profiles/domain/qadtest.com/
> > full/daq</atom:id><atom:link href="https://www.google.com/m8/feeds/
> > photos/profile/qadtest.com/daq" rel="http://schemas.google.com/
> > contacts/2008/rel#photo" type="image/*"/><atom:link href="https://
> >www.google.com/m8/feeds/profiles/domain/qadtest.com/full/daq"
> > rel="self" type="application/atom+xml"/><atom:link href="https://
> >www.google.com/m8/feeds/profiles/domain/qadtest.com/full/daq"
> > rel="edit" type="application/atom+xml"/><atom:title type="text">Diogo
> > Salazar - Test</atom:title><atom:updated>2011-05-31T16:38:20.667Z</
> > atom:updated><atom:edited>2011-05-31T16:38:20.667Z</atom:edited></
> > atom:entry>
>
> > The updated field is "phoneNumber", all I have done was querying my
> > edit feed/url and modifying the selected entries.. then I tried to
> > 'PUT' it back to Google... (as in the php code up on the first post of
> > this thread)...
>
> > I have no idea of what should be done! Any thoughts?
>
> > On May 31, 1:13 pm, Alain Vongsouvanh <[email protected]> wrote:
> > > Hello Diogo,
>
> > > This error means that the request is missing the
> > > Etag<
> >http://code.google.com/apis/gdata/docs/2.0/reference.html#ResourceVer..
> > .>http
> > > header. This information is needed to ensure that your application is
> > > not overwriting a contact that has been updated by another application in
> > > the mean time.
>
> > > You can set the header as follow:
>
> > > $client->setHeaders('If-Match: <ENTRY_ETAG>');
>
> > > You should be able to retrieve the entry's Etag by doing something like
> > > this:
>
> > > $entry->getEtag();
>
> > > If you don't care about other applications changes (not recommended), you
> > > can use the special Etag value '*':
>
> > > $client->setHeaders('If-Match: *');
>
> > > I hope this helped!
> > > Best,
> > > Alain
>
> > > On Mon, May 30, 2011 at 1:43 PM, Diogo Salazar <[email protected]> wrote:
> > > > Hi,
>
> > > > I am trying to manipulate our domain user profile information.
> > > > I have successfully been able to retrieve profile information, but I
> > > > am having a hard time to edit that information...
>
> > > > The code for the editing of contacts follows:
>
> > > > <?php
> > > >  include "functions.php";
>
> > > >  checkLogin();
> > > > ?>
>
> > > > <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://
> > > >www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
> > > > <html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
> > > >  <body>
> > > > <?php
>
> > > >  // load Zend Gdata libraries
> > > >  require_once 'Zend/Loader.php';
> > > >  Zend_Loader::loadClass('Zend_Gdata');
> > > >  Zend_Loader::loadClass('Zend_Gdata_AuthSub');
> > > >  Zend_Loader::loadClass('Zend_Http_Client');
> > > >  Zend_Loader::loadClass('Zend_Gdata_Query');
> > > >  Zend_Loader::loadClass('Zend_Gdata_Feed');
>
> > > >  try {
> > > >    // perform login and set protocol version to 3.0
> > > >    $client = Zend_Gdata_AuthSub::getHttpClient($_SESSION['myToken']);
> > > >    $client->setHeaders('If-Match: *');
>
> > > >    $gdata = new Zend_Gdata($client);
> > > >    $gdata->setMajorProtocolVersion(3);
>
> > > >    $id = 'https://www.google.com/m8/feeds/profiles/domain/qadtest.com/
> > > > full/'.$_SESSION['uname'];
>
> > > >    // perform query and get result feed
> > > >    $query = new Zend_Gdata_Query($id);
> > > >    $entry = $gdata->getEntry($query);
> > > >    $xml = simplexml_load_string($entry->getXML());
>
> > > >    if($_GET['type'] == "e"){
> > > >      foreach($xml->email as $email){
> > > >        if($email['address'] == $_GET['value']){
> > > >          $email['address'] == $_GET['upd'];
> > > >        }
> > > >      }
> > > >    }else if($_GET['type'] == "p"){
> > > >      foreach($xml->phoneNumber as $phone){
> > > >        if($phone == $_GET['value']){
> > > >          $phone == $_GET['upd'];
> > > >        }
> > > >      }
> > > >    }
>
> > > >    /*echo $_GET['type']."<br>";
> > > >    echo $_GET['value']."<br>";
> > > >    echo $_GET['upd']."<br>";*/
>
> > > >    // update entry
> > > >    $entryResult = $gdata->updateEntry($xml->saveXML(),
> > > >      $entry->getEditLink()->href);/*
>
> > > >    echo 'Entry updated';
>
> > > >  }catch (Exception $e){
> > > >    die('ERROR:' . $e->getMessage());
> > > >  }
> > > > ?>
> > > >  </body>
> > > > </html>
>
> > > > The values passed on the URL from the previous page are "type" ('e'
> > > > for email and 'p' for phone), "value" (the original value for that
> > > > field; could not find a key to lookup values... if someone knows a
> > > > better way...) and "upd" which is the updated value for that field.
>
> > > > I'm still trying to learn how to manipulate data using Google's API...
> > > > so the page is not near a finished state....
>
> > > > I'm getting this error: "ERROR:Expected response code 200, got 500 No
> > > > ETag attribute found on an update request"
>
> > > > Any ideas? Thanks in advance!
>
> > > > --
> > > > You received this message because you are subscribed to the Google
> > > > Groups "Google Contacts, Shared Contacts and User Profiles APIs" 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://code.google.com/apis/contacts/community/forum.html
>
> > > --
> > > Alain Vongsouvanh
>
> > --
> > You received this message because you are subscribed to the Google
> > Groups "Google Contacts, Shared Contacts and User Profiles APIs" 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://code.google.com/apis/contacts/community/forum.html
>
> --
> Alain Vongsouvanh

-- 
You received this message because you are subscribed to the Google
Groups "Google Contacts, Shared Contacts and User Profiles APIs" 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://code.google.com/apis/contacts/community/forum.html

Reply via email to