in reply to Re: using perl to read in details from a sharepoint site
in thread using perl to read in details from a sharepoint site

Hi. Sorry it was vague. Here is the code that we are trying to use to read in the data from the sharepoint site (I've removed the company specific info etc). use HTML::Entities; use LWP::UserAgent; use LWP::Debug; use SOAP::Transport::HTTP; use SOAP::Lite on_action => sub { "$_[0]$_1"; }; import SOAP::Data 'name', 'value'; our $sp_endpoint = '"http address of our sharepoint site.aspx"'; our $sp_domain = '"http address of our sharepoint domain:80"'; our $sp_username = "one of our valid accounts"; our $sp_password = "account password"; if ($debug) { LWP::Debug::level('+'); SOAP::Lite->import(+trace => 'all'); my @ua_args = (keep_alive => 1); my @credentials = ($sp_domain, "", $sp_username, $sp_password); my $schema_ua = LWP::UserAgent->new(@ua_args); $schema_ua->credentials(@credentials); $soap = SOAP::Lite->proxy($sp_endpoint, @ua_args, credentials => \@credentials); my $ie="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"; my $ua = LWP::UserAgent->new; $ua->agent($ie); my $url = '"http address of our sharepoint site.aspx"'; my $response = $ua->get ($url); my $content; if ($response->is_success) { print "$response->content\n"; } else { die "DIE!!!:". $response->status_line; } exit; When we run the script the error returned is: proxy: transport protocol not specified For info we have our proxy configs set locally on our pcs and the site we are trying to access is not accessed via proxy server - our credentials are enough to access via the web but not via the script. Can anyone help?
  • Comment on Re^2: using perl to read in details from a sharepoint site

Replies are listed 'Best First'.
Re^3: using perl to read in details from a sharepoint site
by roboticus (Chancellor) on Jun 26, 2009 at 19:33 UTC
    rodneyrods:

    Please put code tags1 around your code blocks. Just so I can read it, I'll copy a couple of lines of your code into this node and put the code tags on it.

    our $sp_endpoint = '"http address of our sharepoint site.aspx"'; our $sp_domain = '"http address of our sharepoint domain:80"';

    Looking at the code, it appears that the extra quotes might be your problem. Have you tried removing the double-quotes and trying it again?

    NOTES:

    1 You can do so like this: <code> ... your code ... </code>

    ...roboticus
      Sorry still new to this! Here is the code, I have replaced the double-quotes with single, the error I now receive is "DIE!!!:401 Unauthorized at sp_scraper2.pl line 59":
      use HTML::Entities; use LWP::UserAgent; use LWP::Debug; use SOAP::Transport::HTTP; use SOAP::Lite on_action => sub { "$_[0]$_[1]"; }; import SOAP::Data 'name', 'value'; our $sp_endpoint = 'http://oursharepointsite.aspx'; our $sp_domain = 'http://oursharepointdomain:80'; our $sp_username = "my valid account"; our $sp_password = "my account password"; if ($debug) { LWP::Debug::level('+'); SOAP::Lite->import(+trace => 'all'); } my @ua_args = (keep_alive => 1); my @credentials = ($sp_domain, "", $sp_username, $sp_password); my $schema_ua = LWP::UserAgent->new(@ua_args); $schema_ua->credentials(@credentials); $soap = SOAP::Lite->proxy($sp_endpoint, @ua_args, credentials => \@cre +dentials); my $ie="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"; my $ua = LWP::UserAgent->new; $ua->agent($ie); my $url = 'http://oursharepointsite.aspx'; my $response = $ua->get ($url); my $content; if ($response->is_success) { print "$response->content\n"; } else { die "DIE!!!:". $response->status_line; } exit;

        It looks to me like you're setting up your $soap object and then not using it to actually make your first call. Instead, you're building a new LWP user agent without any credentials associated with it, and using that.

        Try replacing everything from the line starting 'my $ie=' with the following:

        use Data::Dumper; $soap->transport->credentials( @credentials ); # you probably don't n +eed this my $call= $soap->GetListCollection(); die $call->faultstring() . "\n" . Dumper( $call->faultdetail() ) . "\n +" . $call->faultactor() . "\n" if defined $call->fault();
        - John
        rodneyrods:

        Sorry, but I've played around with it and haven't figured out how to make it authenticate properly either. Hopefully someone else will step in...

        ...roboticus