继续求教.前面开了一帖.提分到150还是没得到满意答案.今天再继续求教还是老问题Delphi结合ASP使用问题.问题如下.小弟现在需要在一个虚拟服务器中架设一个ASP端做为简单的服务端.服务端的功能是使Delphi提交过来的数据进行数据库操作.例如在D客户端进行人员注册.D把注册信息提交到A端A在数据库中查询是否已注册,无注册则注册.已注册给D一个返回信息提示该人员已注册.基本就是这样.我现在的问题主要是ASP没有好好接触过.难点是难以下手.在网上找了这样一个实例利用的D的IDHTTP进行POST.有几个难点看不明白.加上ASP的数据库操作虽然也使用的是ADO.但是看起来也很模糊.
D端代码:
procedure TForm1.Button1Click(Sender: TObject);
var
name:String;
password:string;
GetURL :String;
PostURL :String;
GetHtml :String;
sParams :String;
aParams :TStrings;
aStream :TStringStream;
begin IdHTTP1 := TIdHTTP.Create(nil);
aParams := TStringList.Create;
aStream := TStringStream.Create('');
memo1.Lines.Clear ;
name:=edit1.Text ;
password:=edit2.Text ;
GetURL := 'http://localhost/getinfo.asp'; //难点1:这个是给变量附值我明白.
PostURL := 'http://localhost/getinfo.asp?password='+password; //难点2:可是这里我就不明白了.既然提交参数为什么只提交password,而把name又在下面单独再附给另外一个变量呢?
sParams := 'name='+name;
try
aParams.Clear;
aParams.Add(sParams);
GetHtml := IdHTTP1.Get(GetURL); //难点3:既然要提交数据为什么又先把页面要GET下来呢?
IdHTTP1.Request.ContentType := 'application/x-www-form-urlencoded';//难点4:这里不明白什么意思.
IdHTTP1.Post(PostURL, aParams, aStream); //最后是这里,这个POST好模糊,第一个是带password的URL.可为什么豆号后面又把name参数单独出来.最后的aStream又是做什么用的.
memo1.lines.Add(aStream.DataString);
memo1.SelectAll ;
finally
IdHTTP1.Free;
aParams.Free;
aStream.Free;
end;end;
A端代码
<%@LANGUAGE = VBScript.Encode%>
<!--#include file="conn.asp"-->
<%
dim rs,sql,username,regcode,active,password,founderr,msg
username=trim(request("name"))
password=trim(request("password"))
if username="" then
founderr=true
msg="username参数无效!"
else
founderr=false
end if
if password="" then
founderr=true
msg="password参数无效!"
else
founderr=false
end ifif founderr=true then
response.write msg
else
set rs=Server.CreateObject("ADODB.RecordSet")
sql="select * from reguser where username='"&username&"' and password='"&password&"'"
rs.open sql,conn,1,1
if rs.recordcount>0 then
if trim(rs("regcode"))<>"" then
response.write rs("regcode")
else
response.write "返回的用户注册码无效!"
end if
else
response.write "输入的用户名不存在或者密码无效!"
end if
rs.close
set rs=nothing
end ifcall closeconn()
%>A端大体没有难点.就是看起来很怪,ASP的ADO的Insert和Update应该如何写啊.例如Delphi post过来两个参数,A先用查询查这个两个变量是否存在数据库中,有就给提示,无就直接Insert.SQL语句我会写就是说例如
set rs=Server.CreateObject("ADODB.RecordSet")
sql="select * from reguser where username='"&username&"' and password='"&password&"'"
rs.open sql,conn,1,1
这样的真的看起来很闷.
现在求教那位大哥最好有这方面的demo给小弟一份或帮帮小弟.现在主要是我自己按照上面的例子写的东西Delphi总是提示http/500错误.真的很都大.希望大家帮帮我啊.先上100分.不够再加[email protected]
D端代码:
procedure TForm1.Button1Click(Sender: TObject);
var
name:String;
password:string;
GetURL :String;
PostURL :String;
GetHtml :String;
sParams :String;
aParams :TStrings;
aStream :TStringStream;
begin IdHTTP1 := TIdHTTP.Create(nil);
aParams := TStringList.Create;
aStream := TStringStream.Create('');
memo1.Lines.Clear ;
name:=edit1.Text ;
password:=edit2.Text ;
GetURL := 'http://localhost/getinfo.asp'; //难点1:这个是给变量附值我明白.
PostURL := 'http://localhost/getinfo.asp?password='+password; //难点2:可是这里我就不明白了.既然提交参数为什么只提交password,而把name又在下面单独再附给另外一个变量呢?
sParams := 'name='+name;
try
aParams.Clear;
aParams.Add(sParams);
GetHtml := IdHTTP1.Get(GetURL); //难点3:既然要提交数据为什么又先把页面要GET下来呢?
IdHTTP1.Request.ContentType := 'application/x-www-form-urlencoded';//难点4:这里不明白什么意思.
IdHTTP1.Post(PostURL, aParams, aStream); //最后是这里,这个POST好模糊,第一个是带password的URL.可为什么豆号后面又把name参数单独出来.最后的aStream又是做什么用的.
memo1.lines.Add(aStream.DataString);
memo1.SelectAll ;
finally
IdHTTP1.Free;
aParams.Free;
aStream.Free;
end;end;
A端代码
<%@LANGUAGE = VBScript.Encode%>
<!--#include file="conn.asp"-->
<%
dim rs,sql,username,regcode,active,password,founderr,msg
username=trim(request("name"))
password=trim(request("password"))
if username="" then
founderr=true
msg="username参数无效!"
else
founderr=false
end if
if password="" then
founderr=true
msg="password参数无效!"
else
founderr=false
end ifif founderr=true then
response.write msg
else
set rs=Server.CreateObject("ADODB.RecordSet")
sql="select * from reguser where username='"&username&"' and password='"&password&"'"
rs.open sql,conn,1,1
if rs.recordcount>0 then
if trim(rs("regcode"))<>"" then
response.write rs("regcode")
else
response.write "返回的用户注册码无效!"
end if
else
response.write "输入的用户名不存在或者密码无效!"
end if
rs.close
set rs=nothing
end ifcall closeconn()
%>A端大体没有难点.就是看起来很怪,ASP的ADO的Insert和Update应该如何写啊.例如Delphi post过来两个参数,A先用查询查这个两个变量是否存在数据库中,有就给提示,无就直接Insert.SQL语句我会写就是说例如
set rs=Server.CreateObject("ADODB.RecordSet")
sql="select * from reguser where username='"&username&"' and password='"&password&"'"
rs.open sql,conn,1,1
这样的真的看起来很闷.
现在求教那位大哥最好有这方面的demo给小弟一份或帮帮小弟.现在主要是我自己按照上面的例子写的东西Delphi总是提示http/500错误.真的很都大.希望大家帮帮我啊.先上100分.不够再加[email protected]
IdHTTP1.Request.ContentType := 'application/x-www-form-urlencoded';//问题就是这一句,我需要一个比较详细点的解释.我发现不进行IdHTTP1.Request.ContentType附值程序依旧可以使用.既然如此为什么又要写这句呢,他是什么含义呢?
<!--#include file="conn.asp"-->
<%
daqu=request("A")
ser=request("B")
name=request("C")
pass=request("D")
times=now()
ip=request.servervariables("remote_addr")
sql="select * from biao"
Set Rs=Server.CreateObject("Adodb.Recordset")
Rs.Open Sql,Conn,1,3
Rs.AddNew
rs("daqu")=daqu
rs("ser")=ser
rs("name")=name
rs("pass")=pass
rs("ip")=ip
rs("times")=times
Rs.Update
Rs.Close
%>
post.asp?A='+cbb1.Text+'&B='+cbb2.Text+'&C='+edt1.Text+'&D='+edt2.Text;
一共4个参数 你自己对比这个很容易看得懂 数据库里有1个表6列 daqu ser name pass ip times
IdHTTP1.Request.ContentType := 'application/x-www-form-urlencoded';//就是这句,这到底是什么意思?
这个我也的朦胧的懂 应该是get后 有一个返回数据的 相当与缓存一样属于http协议的发范畴吧 !借鉴 只是我的想法