【问题标题】:HTTP Session from service cloud using PHP code使用 PHP 代码来自服务云的 HTTP 会话
【发布时间】:2016-10-10 13:24:12
【问题描述】:

是否可以在保持 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

谢谢!

【问题讨论】:

  • 定义“崩溃”。你得到了什么错误、输出或结果。
  • 在 rightnow-crm 领域,这是一个一般性的错误,没有说明任何内容。在玩了一会儿之后,我很确定我不允许在 crm 中制作任何临时文件。有解决办法吗?我可以将会话存储在变量中吗?

标签: oracle curl rightnow-crm oracle-service-cloud


【解决方案1】:

您的代码示例是自定义流程模型。 CPM 不允许持久性,一旦 CPM 完成就会关闭。您可以从一个 CPM 运行多个 curl 调用,但不建议这样做;如果每个 CPM 需要多次调用,则应使用集成中间件。

只要您从异步 CPM 运行此代码(同步 CPM 不公开 curl,因此这里应该是这种情况),那么 OSvC 端的错误很可能是连接到“本地测试服务器”,在企业环境中几乎总是不暴露在公共互联网上。因此,您的“崩溃”很可能是连接错误。

根据@drew010,您还需要在此问题的上下文中包含您的错误。

【讨论】:

  • 我看到的唯一错误是“您的请求有错误”。尝试加载该 cpm 页面时。目前,我只在从一个 CPM 运行多个 curl 调用时坚持维护。我的第二条消息返回此异常“sessions.com.oracle.determinations.server.exceptions.NoActiveInterviewExceptionaction”
  • 'curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie-name');' 'curl_setopt($ch, CURLOPT_COOKIEFILE, '/var/www/ip4.x/file/tmp')' 这些行似乎不起作用。任何想法我做错了什么?
  • CPM 不使用浏览器,因此不使用 cookie。由于 CPM 无论如何都不会保持状态,请将您的结果保存在一个变量中,在第二个 curl 调用中使用它,然后期望在 CPM 运行结束时将所有内容都丢弃。
猜你喜欢
  • 2013-06-23
  • 2016-05-08
  • 1970-01-01
  • 2015-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多