Hello,

Sorry about my earlier reply, it seems that your issue is related to this
one:

http://code.google.com/a/google.com/p/apps-api-issues/issues/detail?id=2606

In the meantime, if you have the entry's etag, please make sure to include
it in the entry's gd:etag attribute.

Best,
Alain

On Tue, Jun 7, 2011 at 2:05 AM, James Liu <[email protected]> wrote:

> 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
>



-- 
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