从azure到sugarcrm进行相同的Rest调用返回不同的结果

时间:2017-03-27 07:04:45

标签: php azure sugarcrm

我的sugarcrm网站本地在一个linux ubantu网站上,我写了一些PHP文件,对这个网站进行休息调用,这些PHP文件在azure cloud上。

我发现即使是简单的休息呼叫,有时它会返回正确的结果,但有时会返回“无效会话”,如下所示:

Array ( [name] => Invalid Session ID [number] => 11 [description] => The session ID is invalid )

我的意思是当我不断刷新请求php时,返回的内容并不确定。如果我在我的本地机器中找到这些PHP文件,而不是azure,那么无论我测试多少请求,都会得到正确的结果。

我的休息请求的顺序是:

首先使用admin username和pwd登录,如下所示:

$url = "http://crm.abc.xyz/service/v4_1/rest.php";
ini_set('max_execution_time', 300); 

function restRequest($method, $arguments){
global $url;
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$post = array(
  "method" => $method,
   "input_type" => "JSON",
  "response_type" => "JSON",
  "rest_data" => json_encode($arguments),
);

curl_setopt($curl, CURLOPT_POSTFIELDS, $post);

$result = curl_exec($curl);
curl_close($curl);
return json_decode($result,1);
}

$carrierID = '9';  

$userAuth = array(
 'user_name' => 'admin',
 'password' => md5('XXXXXXX'),
);
$appName = 'My SuiteCRM REST Client';
$nameValueList = array();

$args = array(
  'user_auth' => $userAuth,
  'application_name' => $appName,
  'name_value_list' => $nameValueList);

$result = restRequest('login',$args);
$sessId = $result['id'];

一旦获得返回会话ID到变量$ sessId,使用此会话进行其他休息调用:

 $entryArgs = array(
   'session' => $sessId,
   'module_name' => 'Accounts',
   'query' => "carrierid_c ='999'", 
   'max_results' => 2,
   'deleted' => 0,
 );

 $result = restRequest('get_entry_list',$entryArgs);
 print_r($result);

当print_r($ result);有时会显示:

Array ( [result_count] => 0 [total_count] => 0 [next_offset] => 0 [entry_list] => Array ( ) [relationship_list] => Array ( ) )

意思是没有这个帐户,这是正确的,
但有些时候会显示出来:

Array ( [name] => Invalid Session ID [number] => 11 [description] => The session ID is invalid )

我的猜测是当请求从azure发送到ubantu网站时,它可能来自不同的实例,所以ubantu的sugarcrm从不同的IP收到相同用户的请求并认为它是假会话,我不知道这个猜测是不是正确,也不知道如何在天蓝色中修复它,感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我找到答案,azure确实向sugarcrm发送不同IP的请求,以避免"无效会话" ,我需要取消选中"验证客户端IP"在系统设置中---->提前

enter image description here