我需要在SP 2013 App中使用SP.WebProxy调用远程服务(在sharepoint域外)的帮助。
我能够执行GET调用并正确读取响应,现在我正在尝试执行的是附加了BLOB / Binary文件的PUT请求。
我应该使用什么语法?你有任何关于使用SP.WebProxy发布BLOB / Binary的工作示例吗?
如何指定SP.WebRequestInfo的Body是二进制数据?
这是我到目前为止编写的代码:
var context = SP.ClientContext.get_current();
var request = new SP.WebRequestInfo();
request.set_url('http://xxxxxx.xxxx.xx/');
request.set_body(##WHAT SHOULD I PUT HERE????##);
request.set_method("PUT");
var response = SP.WebProxy.invoke(context, request);
context.executeQueryAsync(function () {
console.log(response.get_statusCode());
console.log(response.get_body());
}, function () {
console.log('Error Code: '++response.get_statusCode());
console.log('Error Body: ' + response.get_body());
});
谢谢和问候
埃米利奥
答案 0 :(得分:0)
发送到REST Web服务URL(YourSiteUrl/_vti_bin/client.svc/ProcessQuery
)时,Web代理请求看起来像这样:
<Request xmlns="http://schemas.microsoft.com/sharepoint/clientquery/2009" SchemaVersion="15.0.0.0" LibraryVersion="16.0.0.0" ApplicationName="Javascript Library">
<Actions>
<StaticMethod TypeId="{656a77c4-1634-415c-bf85-c6c0cb286e0e}" Name="Invoke" Id="0">
<Parameters>
<Parameter TypeId="{71aa825d-bc12-422d-a177-d2e63fe68cd9}">
<Property Name="Body" Type="Null" />
<Property Name="Headers" Type="Dictionary">
<Property Name="Accept" Type="String">application/json</Property>
</Property>
<Property Name="Method" Type="String">GET</Property>
<Property Name="Url" Type="String">...</Property>
</Parameter>
</Parameters>
</StaticMethod>
</Actions>
<ObjectPaths />
</Request>
GUID 656a77c4-1634-415c-bf85-c6c0cb286e0e
实际上是在SPO后端引用Microsoft.SharePoint.Client.WebProxy
,静态方法Invoke
是按名称引用的。 (sparse MSDN entry here)
GUID 656a77c4-1634-415c-bf85-c6c0cb286e0e
是对参数类型Microsoft.SharePoint.Client.WebRequestInfo
的引用。 (sparse MSDN entry here)
最后一个MSDN条目包含有关Body
属性(sparse MSDN entry here)的信息,该信息通知它实际上是String
类型。
所以我认为你需要以某种方式编码二进制数据,例如BASE64 ......