1

誰かが私を正しい方向に導くのを手伝ってくれることを願っています...

Powerbuilder 12 Classic を使用しており、Oracle CRM OnDemand Web サービスを利用しようとしています。

Msxml2.XMLHTTP.4.0 コマンドを使用して、https を使用して接続し、メソッドを呼び出すときに返送する必要があるセッション ID を取得できました。

以下のコードを実行すると、SBL-ODU-01007 The HTTP request did not contain a valid SOAPAction header エラー メッセージが表示されます。何が欠けているのかわからない??

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
4

3 に答える 3

1

ログインとログオフに間違ったURLを使用していると思います。

サンプルは次のとおりです。

残りのコードは私には問題ないように見えます。

于 2012-10-03T01:54:06.947 に答える
0

oleを介したmsxmlを使用したPBで同様の問題が発生しました。これを追加すると役立つ場合があります。

loo_xmlhttp.setRequestHeader("Content-Type", "text/xml")

于 2011-10-25T15:12:07.183 に答える