来自服务云的 HTTP 会话使用 PHP 代码
HTTP Session from service cloud using PHP code
是否可以在保持 HTTP 会话的同时从 Oracle 服务云发送自定义 XML 消息?
到目前为止,我已经成功地使用 cURL 发送了一条消息:
<?php
use \Rightnow\Connect\v1_2 as RNCPHP;
use \Rightnow\CPM\v1 as RNCPM;
$url1 = "";
$startInterviewHeaders = array("SOAPAction: http://oracle");
$startInterview;
// session
//$strCookie = 'PHPSESSID=' . $_COOKIE['PHPSESSID'] . '; path=/';
if(!function_exists("\curl_init")){
\load_curl();
echo "curl loaded";
} else {
echo "curl already exists ";
}
$ch = curl_init();
curl_setopt( $ch, CURLOPT_COOKIE, $strCookie );
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_URL, $url1);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_POSTFIELDS, $startInterview);
curl_setopt($ch, CURLOPT_HTTPHEADER, $startInterviewHeaders);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$startInterviewresponse = curl_exec($ch);
//echo $response;
$http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$curl_errno= curl_errno($ch);
echo "</br> HTTP status: " . $http_status . "</br> cURL error: " .$curl_errno . "</br>";
curl_close($ch); // close cURL
echo $startInterviewresponse;
?>
编辑:上面的代码发送一条消息并获得响应,但是当我尝试与 CURLOPT_COOKIEJAR 和 CURLOPT_COOKIEFILE 保持 HTTP 会话时,第二个 cURL 消息响应抱怨没有活动会话.
sessions.com.oracle.determinations.server.exceptions.NoActiveInterviewExceptionaction "Investigate" can not be performed without an active interview
我用来维护会话的代码(在 Rightnow 环境外测试时有效)
curl_setopt($ch,CURLOPT_USERAGENT, $useragent);
curl_setopt($ch, CURLOPT_COOKIESESSION, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie-name'); //could be empty, but cause problems on some hosts
curl_setopt($ch, CURLOPT_COOKIEFILE, '/var/www/ip4.x/file/tmp'); //could be empty, but cause problems
谢谢!
您的代码示例是自定义流程模型。 CPM 不允许持久化,一旦 CPM 完成就会关闭。您可以 运行 从一个 CPM 调用多个 curl,但不推荐这样做;如果每个 CPM 需要多次调用,则应使用集成中间件。
只要您运行从异步 CPM(同步 CPM 不暴露 curl,所以这里应该是这种情况)中获取此代码,那么 OSvC 方面的错误很可能连接到您的 "local test server" 的问题,在企业环境中,它几乎总是不会暴露给 public 互联网。因此,您的 "crash" 很可能是连接错误。
根据@drew010,您还需要在此问题的上下文中包含您的错误。
是否可以在保持 HTTP 会话的同时从 Oracle 服务云发送自定义 XML 消息?
到目前为止,我已经成功地使用 cURL 发送了一条消息:
<?php
use \Rightnow\Connect\v1_2 as RNCPHP;
use \Rightnow\CPM\v1 as RNCPM;
$url1 = "";
$startInterviewHeaders = array("SOAPAction: http://oracle");
$startInterview;
// session
//$strCookie = 'PHPSESSID=' . $_COOKIE['PHPSESSID'] . '; path=/';
if(!function_exists("\curl_init")){
\load_curl();
echo "curl loaded";
} else {
echo "curl already exists ";
}
$ch = curl_init();
curl_setopt( $ch, CURLOPT_COOKIE, $strCookie );
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_URL, $url1);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_POSTFIELDS, $startInterview);
curl_setopt($ch, CURLOPT_HTTPHEADER, $startInterviewHeaders);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$startInterviewresponse = curl_exec($ch);
//echo $response;
$http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$curl_errno= curl_errno($ch);
echo "</br> HTTP status: " . $http_status . "</br> cURL error: " .$curl_errno . "</br>";
curl_close($ch); // close cURL
echo $startInterviewresponse;
?>
编辑:上面的代码发送一条消息并获得响应,但是当我尝试与 CURLOPT_COOKIEJAR 和 CURLOPT_COOKIEFILE 保持 HTTP 会话时,第二个 cURL 消息响应抱怨没有活动会话.
sessions.com.oracle.determinations.server.exceptions.NoActiveInterviewExceptionaction "Investigate" can not be performed without an active interview
我用来维护会话的代码(在 Rightnow 环境外测试时有效)
curl_setopt($ch,CURLOPT_USERAGENT, $useragent);
curl_setopt($ch, CURLOPT_COOKIESESSION, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie-name'); //could be empty, but cause problems on some hosts
curl_setopt($ch, CURLOPT_COOKIEFILE, '/var/www/ip4.x/file/tmp'); //could be empty, but cause problems
谢谢!
您的代码示例是自定义流程模型。 CPM 不允许持久化,一旦 CPM 完成就会关闭。您可以 运行 从一个 CPM 调用多个 curl,但不推荐这样做;如果每个 CPM 需要多次调用,则应使用集成中间件。
只要您运行从异步 CPM(同步 CPM 不暴露 curl,所以这里应该是这种情况)中获取此代码,那么 OSvC 方面的错误很可能连接到您的 "local test server" 的问题,在企业环境中,它几乎总是不会暴露给 public 互联网。因此,您的 "crash" 很可能是连接错误。
根据@drew010,您还需要在此问题的上下文中包含您的错误。