2016-10-10 26 views
0

是否可以在維護HTTP會話的同時從Oracle服務雲發送自定義XML消息?來自使用PHP代碼的服務雲的HTTP會話

到目前爲止,我已經成功使用捲曲發送一條消息:

<?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 HTTP會話和CURLOPT_COOKIEFILE,第二個cURL消息響應抱怨沒有活動會話。我用於維護會話

sessions.com.oracle.determinations.server.exceptions.NoActiveInterviewExceptionaction "Investigate" can not be performed without an active interview 

代碼

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的環境之外進行測試時,工作)!

+0

定義「崩潰」。你會得到什麼錯誤,輸出或結果。 – drew010

+0

在rightnow-crm的土地上,這是一個通用的錯誤,沒有說什麼。在玩了一段時間後,我很確定我不允許在crm中創建任何臨時文件。有沒有解決辦法?我可以將會話存儲在變量中嗎? – Ward

回答

1

您的代碼示例是一個自定義過程模型。每千次展示費用不允許持續存在,並在CPM完成後關閉。您可以從一個CPM運行多個curl調用,但不建議這樣做;如果每個CPM需要多個呼叫,則應使用集成中間件。

只要您從異步CPM運行此代碼(同步CPM不公開卷曲,因此應該是這種情況),那麼OSvC端的錯誤可能是連接到您的「本地測試服務器「,這在企業環境中幾乎總是不會暴露於公共互聯網。因此,您的「崩潰」可能是連接錯誤。

Per @ drew010,您還需要在此問題的上下文中包含您的錯誤。

+0

我看到的唯一錯誤是「您的請求出錯了。」當試圖加載該cpm頁面時。 目前,我只能堅持在從一個CPM運行多個curl調用時進行維護。我的第二條消息返回這個異常'sessions.com.oracle.determinations.server.exceptions.NoActiveInterviewExceptionaction' – Ward

+0

'curl_setopt($ ch,CURLOPT_COOKIEJAR,'cookie-name');' 'curl_setopt($ ch,CURLOPT_COOKIEFILE,'/var/www/ip4.x/file/tmp')' 這些行似乎不起作用。 任何想法我做錯了什麼? – Ward

+0

CPM不使用瀏覽器,因此不使用Cookie。由於CPM不會保持狀態,因此將結果保存在變量中,在第二次curl調用中使用它,然後期望在CPM運行結束時丟棄所有內容。 –