SBL-ODU-01007 HTTP-запрос не содержит действительный заголовок SOAPAction
Я надеюсь, что кто-то может помочь мне в правильном направлении...
Я использую Powerbuilder 12 Classic и пытаюсь использовать веб-сервис Oracle CRM OnDemand.
Используя команды Msxml2.XMLHTTP.4.0, я смог подключиться, используя https, и получить идентификатор сеанса, который мне нужно отправить обратно при вызове метода.
Когда я запускаю приведенный ниже код, я получаю SBL-ODU-01007 HTTP-запрос не содержит действительного сообщения об ошибке заголовка SOAPAction. Я не уверен, что мне не хватает??
OleObject loo_xmlhttp
ls_get_url = "https://secure-ausomxxxx.crmondemand.com/Services/Integration?command=login"
try
loo_xmlhttp = CREATE oleobject
loo_xmlhttp.ConnectToNewObject("Msxml2.XMLHTTP.4.0")
loo_xmlhttp.open ("GET",ls_get_url, false)
loo_xmlhttp.setRequestHeader("UserName", "xxxxxxx")
loo_xmlhttp.setRequestHeader("Password", "xxxxxxx")
loo_xmlhttp.send()
cookie = loo_xmlhttp.getResponseHeader("Set-Cookie")
sesId = mid(cookie, pos(cookie,"=", 1)+1, pos(cookie,";", 1)-(pos(cookie,"=", 1)+1))
ls_post_url = "https://secure-ausomxxxx.crmondemand.com/Services/Integration/Activity;"
ls_response_text = "jsessionid=" + sesId + ";"
ls_post_url = ls_post_url + ls_response_text
loo_xmlhttp.open ("POST",ls_post_url, false)
loo_xmlhttp.setRequestHeader("COOKIE", left(cookie,pos(cookie,";",1)-1) )
loo_xmlhttp.setRequestHeader("COOKIE", left(cookie,pos(cookie,";",1)-1) )
ls_post_url2 = "document/urn:crmondemand/ws/activity/10/2004:Activity_QueryPage"
loo_xmlhttp.setRequestHeader("SOAPAction", ls_post_url2)
loo_xmlhttp.send()
ls_get_url = "https://secure-ausomxxxx.crmondemand.com/Services/Integration?command=logoff"
loo_xmlhttp.open ("POST",ls_get_url, false)
loo_xmlhttp.send()
catch (RuntimeError rte)
MessageBox("Error", "RuntimeError - " + rte.getMessage())
end try
3 ответа
Я полагаю, что вы используете неверный URL для входа и выхода;
Вот образец:
- https://secure-ausomxxxx.crmondemand.com/Services/Integration?command=login
- https://secure-ausomxxxx.crmondemand.com/Services/Integration?command=logoff
Остальная часть кода выглядит нормально для меня.
Вам нужно убедиться, что ваше значение для ls_post_url2 является одним из значений, найденных в файле wsdl. Просто найдите "soap:operation soapAction" в файле wsdl, чтобы увидеть допустимые значения SOAPAction.
Я столкнулся с аналогичными проблемами в PB с msxml через OLE. Добавление этого может помочь:
loo_xmlhttp.setRequestHeader("Content-Type", "text/xml")