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
