Hi Alain, I have tried to capture the request as you asked me...
In this project I have a main PHP file (HTMLPage.php). This main page makes requests (using AJAX) to other pages for listing profiles, getting a single profile and updating profile information (listProfiles.php, getProfile.php and updateProfile.php repectively). I could notice that the main page gets an ETag... as every item it loads (images, css files....) but not the response from those auxiliar php files I cited above... As the request is processed at the server asynchronously by a JavaScript script, Chrome doesn't seem to be able to get that header information... (I'm not sure if the last is true) I can post the source of all the files if needed.. Thanks in Advance! Regards, Diogo Salazar On Jun 1, 2:20 pm, 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
