hprose DELPHI 调用报错的问题
procedure TForm1.Button2Click(Sender: TObject);
var
client : THproseIdHttpClient;
begin
client := THproseIdHttpClient(nil);
//client.UseService('http://127.0.0.1/helloserver.php');
client.UseService('http://www.hprose.com/example/');
showmessage(client.Invoke('hello',['world']));
client.Free;
end;
--------------------------------
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(10)
服务器端在哪,如何搭建服务器?
xe的新特性,不关心; 关心的是 session_start() 这样的函数:还有哪些,什么情况下需要使用它们
回复
session_start() 这个是 PHP 里面的函数,上面这个问题是 PHP 和 Delphi 通过 hprose 通讯,传递 session 的问题。只要 PHP 服务部分开启了 session,Delphi 客户端会自动处理 session cookie 的。
引用来自“andot”的评论
你没有写session_start()
引用来自“andot”的评论
你没有写session_start()
你没有写session_start()
感觉对HProse 的数据类型的转换不太会应用1
做了验证后,DELPHI 验证无效,就提示'getQueryData' 此函数没发布!
procedure TForm1.Button4Click(Sender: TObject);
var
HPROSE1: THproseIdHttpClient;
datas,rows:IList;
br:boolean;
i: Integer;
begin
HPROSE1 := THproseIdHttpClient.Create(nil);
HPRose1.UseService('http://127.0.0.1/DataInterface.php');
br := HPRose1.Invoke('check_login',['admin','123']);
datas := VarToList(HPRose1.Invoke('getQueryData',['user1','where 1=1']));
for i:=0 to datas.Count-1 do
begin
rows :=VarToList(datas[i]);
Memo1.Lines.Add('----------Line' + IntToStr(i+1) + '----------');
Memo1.Lines.Add('id =' + rows[0]);
Memo1.Lines.Add('name =' + rows[1]);
Memo1.Lines.Add('password =' + rows[2]);
end;
end;
问题描述:
我想用PHROSE 来做数据传送,用PHP 做服务器,DELPHI 做客户端,定时发请求去取数据。现在是问是,想在发请求时先做个用户验证,结果php,没问题,DELPHI 又有问题了,代码如下. 另外一点,就是HPROSE 的数据类型转换的PPT说明中能分类举例说明一下就跟好。谢谢!
========PHP Server Code ============
<?php
include("hprose/php5/hproseHttpServer.php");
$server = new HPRoseHttpServer();
$server->addFunction('check_login');
//登陆验证通过后发布
if (isset($_SESSION["client_authorized"]) && $_SESSION["client_authorized"] == true)
{
require_once('./InterFaceFunList.php');
$server->addFunction('hello');
$server->addFunction('getQueryData');
}
function check_login($username, $password ){
if (($username == 'admin') && ($password == '123'))
{
$_SESSION["client_authorized"] = true;
$_SESSION['admin'] = 'admin';
$_SESSION['password'] = '123';
//$arr = array();
//$arr['username'] = $username;
//$arr['password'] = $password;
return true;
}
else
{
return false;
}
}
$server->handle();
?>
================================
=======DELPHI client code ============
procedure TForm1.Button4Click(Sender: TObject);
var
HPROSE1: THproseIdHttpClient;
datas,rows:IList;
br:boolean;
i: Integer;
begin
HPROSE1 := THproseIdHttpClient.Create(nil);
HPRose1.UseService('http://127.0.0.1/DataInterface.php');
br := HPRose1.Invoke('check_login',['admin','123']); //
datas := VarToList(HPRose1.Invoke('getQueryData',['user1','where 1=1']));
for i:=0 to datas.Count-1 do //报错 'variant method calls not suppoerted'
begin
rows :=VarToList(datas[i]);
Memo1.Lines.Add('----------Line' + IntToStr(i+1) + '----------');
Memo1.Lines.Add('id =' + rows[0]);
Memo1.Lines.Add('name =' + rows[1]);
Memo1.Lines.Add('password =' + rows[2]);
end;
end;