我正在尝试使用JQuery和AJAX在JavaScript中查询搜索服务。我一直收到415不支持的媒体类型错误。我通过这个AJAX命令向服务器发送一个SOAP信封:
$。AJAX({
url: "http://groups.company.com/_vti_bin/search.asmx",
beforeSend: function(xhr) {
xhr.setRequestHeader("SOAPAction",
"http://microsoft.com/webservices/OfficeServer/QueryService/GetPortalSearchInfo");
},
type: "POST",
dataType: "text",
data: soapEnv,
complete: processResult,
contentType: "application/text charset=\"utf-8\""
})
我尝试了各种内容类型,但我看不到任何有用的内容。它应该是什么?谢谢!
答案 0 :(得分:3)
你的最后一行应该是:
contentType: "text/xml; charset=\"utf-8\""
答案 1 :(得分:0)
可能根本不是“不正确”的内容类型!
SharePoint将返回HTTP 415尝试访问具有匿名访问的站点上的SOAP服务,因为各种SharePoint Web服务需要身份验证。 结果的正文可能包含错误消息,例如:(为什么这会以415返回...我不知道。)
以下文件已被管理员阻止:/ Lists/MyList/calendar.asp/_vti_bin/Lists.asmx
如果情况确实如此,那么您可以要求 SharePoint使用X-RequestForceAuthentication标头提供HTTP 401质询(虽然这可能不是必需的,我自己也没有测试过但是,YMMV: - )。
确保发送适当的HTTP WWW-Authenticate标头。请注意,在C#中,如果未发生挑战,则必须手动启用标头,根据HttpWebRequest.PreAuthenticate,其他环境可能存在类似问题。
快乐的编码。
此外,SOAP 1.1或1.2与SharePoint 2007/2010一起使用也无关紧要。使用内容类型:(甚至不要考虑application/soap-xml
...)
text/xml; charset="UTF-8"
或者生成415 。