一个关于TNMHTTP编程的问题(50分)

  • 主题发起人 主题发起人 hujunyi
  • 开始时间 开始时间
H

hujunyi

Unregistered / Unconfirmed
GUEST, unregistred user!
我用Delphi4编程遇到一个问题:
我想用get方法向HTTP发送一些数据,其中含有字符串终止符#0和#220等,
请问我应该如何用TNMHttp组件;或其它方法该如何实现。
hujunyi

谢谢!
 
我急啊,我等待……
 
url 编码你会么? 全改成%3A 什么的就行了.
这个函数就行了.
{ Encode the data to be sent to the CGI }
function URLEncode(const msg : String) : String;
var
I : Integer;
begin
Result := '';
for I := 1 to Length(msg) do begin
if msg = ' ' then
Result := Result + '+'
else if msg in ['a'..'z', 'A'..'Z', '0'..'9'] then
Result := Result + msg
else
Result := Result + '%' + IntToHex(ord(msg), 2);
end;
end;
 
建议你改用INDY 不要用TNMHTTP,否则再post多个变量数据时你会很惨.
 
三代坦克说的很对,unecode编码当然是可以解决这个问题,可是在接收方法要解码,
而接收程序不是我做的,人家是现在成的,而且也没法取得联系。
但不知道您说的INDY是个什么组件?请问在什么地方可以DOWNLOAD。
另外我是这样想如果知道协议转换的话,就可以用TClientSocket的SendBuf来取代了。
请大师指点迷津!!!!
 
不管你用什么组件,http协议的get方法都不会让你不转换就发送$0的.
接收方应该转换的.一般服务器方的php,asp应该是自动转换的,
c写的cgi程序可能不会做转换(那写这程序的人太~~~~)

indy 就是delphi6 和kylix用的internet组件,
http://www.nevrona.com/Indy/Download.html
 
那照三代坦克说的,我是真的没有别的出路了。
我想是否可以用SOCKET按HTTP的协议来把#0发送出去呢?
 
问题的根本不在你这边,server端如果没有urldecode,你就是按http协议发给它,
#0他也会认为是结束符号.一般说来,如果server 端cgi没考虑这问题,
你是没出路了.
 
说的也是,如果他那边没有按数据流接收我按数据流过去他也只收到一半。
好啦,谢谢大家的支持,把钱分了吧。
 
后退
顶部