Thanks Paul.  I've tagged it.

I also opened the bug under the .NET library's issue tracker:
http://code.google.com/p/google-gdata/issues/detail?id=165

Eric

On Sep 1, 7:37 am, paul s <[EMAIL PROTECTED]> wrote:
> Eric,
>
> I have raised a defect report for this issue 
> -http://code.google.com/p/gdata-issues/issues/detail?id=730.  However,
> I couldn't see how to allocate it as a Google Base API defect as
> opposed to any of the others.
>
> Thanks
> - Paul
>
> On Jul 8, 3:30 pm, Frank Mantek <[EMAIL PROTECTED]> wrote:
>
> > This is from the .NET source code (parser for the batch error)...
>
> >                  // status can have one child element, errors
> >                  // for now disabled, as this is currently not  
> > supported on the server
> >                  // instead the errors come as encoded strings
> >                  /*
> >                  int lvl = -1;
> >                  while(NextChildElement(reader, ref lvl))
> >                  {
> >                      localname = reader.LocalName;
>
> >                      if (localname.Equals(this.nameTable.BatchErrors))
> >                      {
> >                          // author.Name =                
> > Utilities.DecodeString(Utilities.DecodedValue(reader.ReadString()));
> >                          status.Errors = ParseBatchErrors(reader);
> >                      }
> >                  }
> >                  */
>
> > So the server must have changed that behavior at one point in time and  
> > i was not in the loop :)
>
> > The code was written a LONG time ago, so just enabling this and the  
> > corresponding property might not be sufficient.
>
> > I won't have time to fix this soon (i am travelling now, and then i am  
> > on vacation), but if you would file a bug report here, preferably with  
> > a case how to repro this (meaning what's the cheapest way to create a  
> > batch error collection):
>
> >http://code.google.com/p/google-gdata
>
> > I am going to make sure i fix that when i am back in around 4 weeks.  
> > meanwhile feel free to uncomment that code and the corresponding  
> > property in the batchstatus, compile and hopefully it works fine.
>
> > Frank Mantek
> > Google
>
> > On Jul 7, 2008, at 8:46 AM, paul s wrote:
>
> > > Eric,
>
> > > No, unfortunately not.
>
> > > This just gives the info from the <batch:status code='400'
> > > reason='Invalid item' content-
> > > type='application/xml'> As you can see, this isn't very descriptive or
> > > useful, BUT, the underlying XML does have an errors collection which
> > > doesn't seem to be accessible via the API.
>
> > > What is actually needed is the info from the <errors> collection that
> > > follows it, so in my example above:
> > > <errors>
> > >  <error type="data" field="expiration_date" reason="Invalid type
> > > specified ('text') for field 'expiration_date'.  Please omit type or
> > > specify type 'datetimerange'." />
> > >  <error type="data" field="price_type" reason="Invalid price type" />
> > > </errors>
>
> > > - I want to be able to get to that useful info about the field
> > > expiration_date having an invalid type specified - takes me straight
> > > to the error rather than spending 20 minutes with a packet sniffer -
> > > but this doesn't seem to be available anywhere within the API.
>
> > > Thanks
> > > Paul
>
> > > On Jul 5, 2:10 am, "Eric (Google)" <[EMAIL PROTECTED]> wrote:
> > >> Hi Paul,
>
> > >> Does something like this work?
>
> > >> AtomFeed resultFeed = service.Batch(batchFeed, new
> > >> Uri(baseFeed.Batch));
>
> > >>  foreach (AtomEntry resultEntry in resultFeed.Entries )
> > >>  {
> > >>     GDataBatchEntryData data = resultEntry.BatchData;
> > >>     data.Status.Code/Reason/Type.....
>
> > >> }
>
> > >> Eric
>
> > >> On Jul 4, 7:02 am, paul s <[EMAIL PROTECTED]> wrote:
>
> > >>> OK, it looks like this isn't possible, but this is a major oversight
> > >>> if so! I'm having to use a packet sniffer just to find out why an  
> > >>> item
> > >>> has been rejected! Is there any way to at least access the raw XML  
> > >>> so
> > >>> that I can parse this myself in case of an error?
>
> > >>> Any help much appreciated
> > >>> - Paul
>
> > >>> On 3 Jul, 09:55, paul s <[EMAIL PROTECTED]> wrote:
>
> > >>>> Thanks for your reply, Eric.
>
> > >>>> The problem I have is that the status code and message only  
> > >>>> return the
> > >>>> <batch:status> "code" and "reason" attributes. In my case this is  
> > >>>> just
> > >>>> "400" and "Invalid Item" respectively. This really isn't enough
> > >>>> information to know what's gone wrong! The *real* error information
> > >>>> that I need to access is in the <errors> node of the XML.
> > >>>> i.e. Invalid type specified ('text') for field 'expiration_date'.
> > >>>> Please omit type or specify type 'datetimerange'
> > >>>> - but I can't find a way of accessing this info via the C# API
>
> > >>>> Can you tell me how you access the <errors> node in the C# API,
> > >>>> please ?
>
> > >>>> Thanks,
> > >>>> - Paul
>
> > >>>> On 3 Jul, 01:22, "Eric (Google)" <[EMAIL PROTECTED]> wrote:
>
> > >>>>> Hi Paul,
>
> > >>>>> Spreadsheets has a nice example of using batch requests
> > >>>>> and checking the BatchData.Status.Code here:
>
> > >>>>>http://code.google.com/apis/spreadsheets/developers_guide_dotnet.html
> > >>>>> ...
>
> > >>>>> I'll look into getting this documented for the Base API.
>
> > >>>>> Eric
>
> > >>>>> On Jul 2, 7:40 am, paul s <[EMAIL PROTECTED]> wrote:
>
> > >>>>>> When I submit a feed to Google Base, all my items were being  
> > >>>>>> returned
> > >>>>>> with an "Invalid Item" response. I could find no way of finding  
> > >>>>>> out
> > >>>>>> what the reason that it was invalid actually was through the c#  
> > >>>>>> API,
> > >>>>>> which left me wondering how I could find out why my items were  
> > >>>>>> being
> > >>>>>> rejected!
>
> > >>>>>> However, if I set up a packet sniffer and see the actual XML  
> > >>>>>> traffic
> > >>>>>> coming back from Google, I can see that detailed error details  
> > >>>>>> are
> > >>>>>> being returned by Google, as follows:
>
> > >>>>>> <?xml version='1.0' encoding='UTF-8'?>
> > >>>>>> <atom:feed xmlns:atom='http://www.w3.org/2005/Atom'
> > >>>>>> xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/'
> > >>>>>> xmlns:gm='http://base.google.com/ns-metadata/1.0'xmlns:g='http://
> > >>>>>> base.google.com/ns/1.0' xmlns:batch='http://schemas.google.com/gdata/
> > >>>>>> batch'>
> > >>>>>> <atom:id>http://www.google.com/base/feeds/items</atom:id>
> > >>>>>> <atom:updated>2008-07-02T13:33:03.334Z</atom:updated>
> > >>>>>> <atom:title type='text'>Batch Feed</atom:title>
> > >>>>>> <atom:link rel='http://schemas.google.com/g/2005#feed'
> > >>>>>> type='application/atom+xml' href='http://www.google.com/base/feeds/
> > >>>>>> items'/>
> > >>>>>> <atom:link rel='http://schemas.google.com/g/2005#post'
> > >>>>>> type='application/atom+xml' href='http://www.google.com/base/feeds/
> > >>>>>> items'/>
> > >>>>>> <atom:link rel='http://schemas.google.com/g/2005#batch'
> > >>>>>> type='application/atom+xml' href='http://www.google.com/base/feeds/
> > >>>>>> items/batch'/>
> > >>>>>> <atom:entry><atom:id>1</atom:id>
> > >>>>>> <atom:updated>2008-07-02T13:33:03.334Z</atom:updated>
> > >>>>>> <atom:title type='text'>Error</atom:title>
> > >>>>>> <atom:content type='text'>Invalid item</atom:content>
> > >>>>>> <batch:id>1</batch:id>
> > >>>>>> <batch:status code='400' reason='Invalid item' content-
> > >>>>>> type='application/xml'>
> > >>>>>> <errors>
> > >>>>>>   <error type="data" field="expiration_date" reason="Invalid type
> > >>>>>> specified ('text') for field 'expiration_date'.  Please omit  
> > >>>>>> type or
> > >>>>>> specify type 'datetimerange'." />
> > >>>>>>   <error type="data" field="price_type" reason="Invalid price  
> > >>>>>> type" />
> > >>>>>> </errors>
> > >>>>>> </batch:status>
> > >>>>>> <batch:operation type='insert'/>
> > >>>>>> </atom:entry>
> > >>>>>> </atom:feed>
>
> > >>>>>> So now I can see the reason for rejection, but I still don't  
> > >>>>>> know how
> > >>>>>> to access this level of detail from the C# API.
>
> > >>>>>> Can anyone tell me how this might be possible? I was looking for
> > >>>>>> something like a GBaseEntry.Errors collection, or a
> > >>>>>> GBaseEntry.BatchData.Errors collection, or a
> > >>>>>> GBaseEntry.BatchData.Status.Errors collection... none of which  
> > >>>>>> seem to
> > >>>>>> exist! Surely it can't be the case that we need to view HTTP  
> > >>>>>> traffic
> > >>>>>> to find out the reason for rejection?
>
> > >>>>>> Thanks in advance!
> > >>>>>> - Paul
>
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Google Base 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-Base-data-API?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to