3

Just asked this over on StackOverflow, so I apologize for cross-posting, but I thought I might have more luck with a response on this site.

I want to get the contents of a SharePoint 2007 list via web service. I'm using this code, which I mostly copied from the MSDN page for GetListItems:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;

namespace testGetListItems
{
    class Program
    {
        static void Main(string[] args)
        {
            sharepoint.Lists listService = new sharepoint.Lists();
            listService.Credentials = System.Net.CredentialCache.DefaultCredentials;

            XmlDocument xmlDoc = new System.Xml.XmlDocument();

            XmlNode ndQuery = xmlDoc.CreateNode(XmlNodeType.Element, "Query", "");
            XmlNode ndViewFields = xmlDoc.CreateNode(XmlNodeType.Element, "ViewFields", "");
            XmlNode ndQueryOptions = xmlDoc.CreateNode(XmlNodeType.Element, "QueryOptions", "");

            ndQueryOptions.InnerXml =
                "<IncludeMandatoryColumns>FALSE</IncludeMandatoryColumns>" +
                "<DateInUtc>TRUE</DateInUtc>";
            ndViewFields.InnerXml = "<FieldRef Name='Field1' />    <FieldRef Name='Field2'/>";
            ndQuery.InnerXml = "<Where><And><Gt><FieldRef Name='Field1'/>" +
                "<Value Type='Number'>5000</Value></Gt><Gt><FieldRef Name='Field2'/>" +
                "<Value Type=        'DateTime'>2003-07-03T00:00:00</Value></Gt></And></Where>";
            try
            {
                bool checkoutResult=listService.CheckOutFile("http://sharepoint/sites/mysite/myFile.xlsx", "false", null);
                XmlNode ndListItems =
                    listService.GetListItems("Test List", null, ndQuery,
                    ndViewFields, null, ndQueryOptions, null);
            }

            catch (System.Web.Services.Protocols.SoapException ex)
            {
                Console.WriteLine("Message:\n" + ex.Message + "\nDetail:\n" +
                    ex.Detail.InnerText +
                     "\nStackTrace:\n" + ex.StackTrace);
            }
        }
    }
}

The call to CheckOutFile() works correctly. But the GetListItems() call gives me this error:

An unhandled exception of type 'System.Net.WebException' occurred in System.Web.Services.dll

Additional information: The request failed with HTTP status 401: Unauthorized.

I don't understand why CheckOutFile() succeeds but GetListItems() fails, especially because the document that I'm checking out is in the list that's being accessed by GetListItems().

1

I resolved this by changing the web service's URL in app.config; see this StackOverflow answer.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.