尝试使用Copy.asmx Web服务将内容上载到sharepoint站点时获取400 Bad Request

时间:2012-03-13 09:05:26

标签: iphone objective-c ios sharepoint

我正在尝试使用其中一个iPhone应用程序的Copy.asmx Web服务的CopyIntoItems操作将内容上传到SharePoint网站。

以下是我尝试发布的示例xml。

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<CopyIntoItems xmlns="http:"//schemas.microsoft.com/sharepoint/soap/"><SourceUrl>http://null</SourceUrl><DestinationUrls><string>mytestsite/Upload Library/Check_File_Upload.txt</string></DestinationUrls><Fields><FieldInformation Type="File" DisplayName="Name" InternalName="FileLeafRef" Value="Check_File_Upload.txt" /><FieldInformation Type="Guid" DisplayName="GUID" InternalName="GUID" Value="{21026DFC-E19E-470E-8B1D-7D7C5FA84FF3}" /></Fields><Stream>VGhpcyBpcyBhIHRlc3QgZmlsZSB0byBjaGVjayB1cGxvYWQgZnVuY3Rpb25hbGl0eS4gYW5kIGNoZWNraW5nIGFnYWluLg==</Stream></CopyIntoItems>
</soap:Body>
</soap:Envelope>

任何人都可以帮我解决问题吗?

1 个答案:

答案 0 :(得分:0)

我能够用Java做到这一点。见这个帖子

Gettting 400 Bad Request while uploading file to SharePoint 2010 using Copy.CopyIntoItems web service

希望这有帮助。

这里还有一些我编译过的非常有用的字段类型。我正在使用SharePoint 2010

选择列表

fieldInfo.setDisplayName("Day Of Week");
fieldInfo.setType(FieldType.CHOICE);
fieldInfo.setValue("Friday"); 

多选列表,请注意每个值以;#

分隔
fieldInfo.setDisplayName("Hobbies");
fieldInfo.setType(FieldType.MULTI_CHOICE);
fieldInfo.setValue("Biking;#Reading"); 

企业关键字

fieldInfo.setDisplayName("Enterprise Keywords");
fieldInfo.setType(FieldType.NOTE);
fieldInfo.setValue("-1;#wind;#-1;#turbine"); 

托管元数据。重要的是,请注意displayname必须附加到“_0”,并且值必须采用-1#SomeValue | guid格式,如下所示

fieldInfo.setDisplayName("MyMetadata_0");
fieldInfo.setType(FieldType.NOTE);
fieldInfo.setValue("-1;#wind|4c29faf0-bea6-4032-893f-d5aaea458728;#-1;#turbine|6e552448-77d1-4349-bc11-52debdcbc860"); 

内容类型。您可以通过查看内容类型属性来获取内容类型的ID,并在网址中记下ID,例如。获取参数的值,ctype https://eimsscnqa.sandia.gov/sites/DocLib026/_layouts/ManageContentType.aspx?ctype=0x0101005C02449B3F60DF42A78192F51AAD4A5202e

fieldInfo.setDisplayName("Content Type Id");
fieldInfo.setType(FieldType.TEXT);
fieldInfo.setValue("0x0101005C02449B3F60DF42A78192F51AAD4A5202e");