gpt4 book ai didi

javascript - 从 Adob​​e Acrobat X Javascript 调用 Web 服务

转载 作者:行者123 更新时间:2023-11-30 06:01:54 26 4
gpt4 key购买 nike

我正在尝试从 Acrobat JavaScript 调用 SharePoint Web 服务,但我遇到了一个我似乎无法解决的错误。希望对我调用 Sharepoint 时做错的事情有所帮助。我见过两种对 Web 服务进行 SOAP 调用的方法:

方式一:

var strURL = "http://www.webservicex.net/globalweather.asmx?wsdl";
var service = SOAP.connect(strURL);
var sCountryName = "United States";
var sCityName = "New York";
var result = {
soapType: "xsd:string",
CountryName: sCountryName,
CityName: sCityName
//soapValue:
};
var results = service.GetWeather(result);

这在我直接复制代码时有效,但是当我尝试用我的代码替换它时,我收到“服务未定义”错误消息:

var strURL = "http://dev-dc:40570/branches/GHIS/XXXXXXX/_vti_bin/lists.asmx?wsdl";
var service = SOAP.connect(strURL);

var sPageURL = "http://devdc:40570/branches/GHIS/XXXXXXX/Other%20Client%20Documents/XXXXXXX.pdf";
var sCheckoutToLocal = "false";
var sLastModified = "";
var result = {
soapType: "xsd:string",
pageURL: sPageURL,
checkoutToLocal: sCheckoutToLocal,
LastModified: sLastModified
};
var results = service.CheckOutFile(result);

由于这不起作用,我尝试了方法 2 来调用网络服务:

var oAuthenticator ={ UsePlatformAuth: "true"};
var cURL = "http://www.webservicex.net/globalweather.asmx";
var oRequest = {"http://www.webserviceX.NET:GetWeather":{CityName:"New York",CountryName:"United States"}};
var cAction = "http://www.webserviceX.NET/GetWeather";
var ver = SOAPVersion.version_1_2;
SOAP.wireDump = "true";
var response = Net.SOAP.request({cURL:cURL,oRequest:oRequest,cAction:cAction,oAuthenticate:oAuthenticator,bEncoded:false,cVersion:ver});

虽然说未提供 CountryName,但我在使用此样式时遇到错误。使用我的代码,我得到了一个类似的错误,指出 pageUrl 丢失或无效:

var oAuthenticator ={ UsePlatformAuth: "true"};
var cURL = "http://dev-dc:40570/branches/GHIS/XXXXXXX/_vti_bin/lists.asmx?wsdl";
var oRequest = {
"http://schemas.microsoft.com/sharepoint/soap:CheckOutFile":{
pageUrl:"http://dev-dc:40570/branches/GHIS/XXXXXXX/Other%20Client%20Documents/XXXXXXX.pdf",
checkoutToLocal:"false",
lastmodified:""
}};
var cAction = "http://schemas.microsoft.com/sharepoint/soap/CheckOutFile";
var ver = SOAPVersion.version_1_1;
SOAP.wireDump = "true";
var response = SOAP.request({
cURL:cURL,
oRequest:oRequest,
cAction:cAction,
oAuthenticate:oAuthenticator,
bEncoded:false,
cVersion:ver
});

谁能帮我弄清楚为什么我似乎无法调用此 SharePoint Web 服务?我不在乎我使用哪种方法,只要我可以从 Acrobat 的 javascript 中与网络服务对话即可。此外,如果有帮助,建议在浏览器中手动导航到 Web 服务时调用:

POST /_vti_bin/lists.asmx HTTP/1.1
Host: dev-dc
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
<CheckOutFile xmlns="http://schemas.microsoft.com/sharepoint/soap/">
<pageUrl>string</pageUrl>
<checkoutToLocal>string</checkoutToLocal>
<lastmodified>string</lastmodified>
</CheckOutFile>
</soap12:Body>
</soap12:Envelope>

最佳答案

在做了一些实验之后,我了解到您可以传递原始 XML 而不是使用 acrobat 来构建代码的请求部分,它会完全按照键入的方式传递。因此,我确定 Sharepoint 必须寻找一种特定的 XML 结构方式。通过更改代码以传递 XML,Sharepoint 和 Acrobat 得以成功通信。修改后的(工作)代码如下所示:

/**WebService Call to the Sharepoint Lists service for Checking Out the current document**/
function CheckOutFile(myFileVal){
var oAuthenticator ={ UsePlatformAuth: "true"};
var cURL = GetDocLibraryWS(myFileVal.path);
var oRequest = {
soapValue: "<CheckOutFile xmlns='http://schemas.microsoft.com/sharepoint/soap/'>"+
"<pageUrl>"+myFileVal.path+"</pageUrl>"+
"<checkoutToLocal>false</checkoutToLocal>"+
"<lastmodified/>"+
"</CheckOutFile>"};
var cAction = "http://schemas.microsoft.com/sharepoint/soap/CheckOutFile";
var ver = SOAPVersion.version_1_2;
var response = SOAP.request({
cURL:cURL,
oRequest:oRequest,
cAction:cAction,
oAuthenticate:oAuthenticator,
bEncoded:false,
cVersion:ver
});}
/**derives the document library web service path from the file URL**/
function GetDocLibraryWS(myFile){
var myString = myFile.substring(0,myFile.lastIndexOf("/"));
myString = myString + "/_vti_bin/Lists.asmx";
return myString;}

关于javascript - 从 Adob​​e Acrobat X Javascript 调用 Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7876469/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com