关于DELPHI开发WEBSERVICE问题,讨论!
环境:D6+SP2+IIS+WIN2000AD+SP2
WEB SERVICE:ISAPI DLL;
问题:SERVICE写好,用WEB浏览无问题;但调用的时候偶尔发生TEXT/HTML错误;说要求TEXT/XML,但得到的是TEXT/HTML。
其他:
1、能否和。NET的WEB SERVICE兼容?说是无问题,实际中如何呢?
2、和JAVA开发的WEB SERVICE能兼容吗?
3、哪里有较详细的资料下载?
不能感激!分数好说,我有一万可用分。
问题点数:100、回复次数:20Top
1 楼outer2000(天外流星)回复于 2002-10-09 16:10:09 得分 0
大家帮忙啊,着急!!Top
2 楼smile_cc(笑笑)回复于 2002-10-09 16:14:21 得分 10
关注!Top
3 楼sanjianxia(三剑侠)回复于 2002-10-09 17:20:17 得分 20
1)d6支持xml技术了,采用datasnap组件包可能完成呀!
但调用的时候偶尔发生TEXT/HTML错误,说明你的客户端环境没有配置好。
2)d6如果采用xml,那么他能够与.net技术兼容,其本质就是大家共同使用相同的标识脚本罢了。
3)和JAVA开发能够兼容,但不完全。你试试就知道了。
4)资料我觉得看看它的帮助系统吧,尽管全部E文,但我还没有找到更全的资料库呢。Top
4 楼hongqi162(失踪的月亮)回复于 2002-10-09 17:23:17 得分 5
关注!Top
5 楼shanxia(山峡)回复于 2002-10-09 17:59:47 得分 5
学习!Top
6 楼zxw111111(秋风)回复于 2002-10-09 18:06:09 得分 10
??关注 听课!大家来Top
7 楼outer2000(天外流星)回复于 2002-10-09 18:06:54 得分 0
我觉得发生错误是写的WEB SERVICE是的原因,是CONTENTTYPE类型错误;当调用者接收到数据后,进行分析,导致异常;我跟踪了,返回的的确是
TEXT/HTML;Top
8 楼outer2000(天外流星)回复于 2002-10-09 18:11:26 得分 0
通过跟踪发现;第一次是TEXT/HTML;然后都是TEXT/XML;Top
9 楼outer2000(天外流星)回复于 2002-10-09 18:14:13 得分 0
高手请快点出手啊!Top
10 楼chechy(www.qdocuments.net)回复于 2002-10-09 20:41:48 得分 0
D7和.net完全兼容,互联互通,我已经测试过了。Top
11 楼outer2000(天外流星)回复于 2002-10-09 20:59:14 得分 0
老大,我的问题在什么地方,为什么第一次出错啊·!!!Top
12 楼outer2000(天外流星)回复于 2002-10-09 21:05:15 得分 0
神啊,救我啊!Top
13 楼chechy(www.qdocuments.net)回复于 2002-10-09 21:15:34 得分 0
D7调用D7,还是D7调用.net啊?
我都没有出错过。只是.net调用D7需要修改一下.net生成的代码。
我还发现,尽管D7是二进制代码,而.NET生成的是IL。第一次运行.net不如D7,但是以后,.net明显速度快于D7。Top
14 楼outer2000(天外流星)回复于 2002-10-10 08:06:41 得分 0
是D7调用D7写的WEB SERVICE,第一次调用的时候有问题,说要求TEXT/XML而返回的是TEXT/HTML;导致异常,但以后都没有问题的,怎么处理啊!Top
15 楼chechy(www.qdocuments.net)回复于 2002-10-10 08:18:40 得分 40
呵呵,不好意思,我只用D7做了一些验证性的工作,你的这种情况,我没有遇见过。自然不知道怎么处理了。Top
16 楼outer2000(天外流星)回复于 2002-10-10 08:22:53 得分 0
我估计是在MIME类型出的问题;
我看了HELP,里面 TWEBRESPONSE在返回CONTENTTYPE的时候返回REQUEST的CONTENTYPE,但是为什么没有返回呢?Top
17 楼rwdx(忆)回复于 2002-10-10 08:33:42 得分 10
高手都去搞web编程了,呵呵Top
18 楼outer2000(天外流星)回复于 2002-10-10 08:36:54 得分 0
现在我想知道是我 WEB SERVICE写的有问题,还是调用写的有问题;Top
19 楼outer2000(天外流星)回复于 2002-10-10 08:40:49 得分 0
library Project11;
uses
ActiveX,
ComObj,
WebBroker,
ISAPIThreadPool,
ISAPIApp,
Unit1 in 'Unit1.pas' {WebModule1: TWebModule},
dddImpl in 'dddImpl.pas',
dddIntf in 'dddIntf.pas';
{$R *.res}
exports
GetExtensionVersion,
HttpExtensionProc,
TerminateExtension;
begin
CoInitFlags := COINIT_MULTITHREADED;
Application.Initialize;
Application.CreateForm(TWebModule1, WebModule1);
Application.Run;
end.
/////////////////////////////////////////
{ SOAP WebModule }
unit Unit1;
interface
uses
SysUtils, Classes, HTTPApp, InvokeRegistry, WSDLIntf, TypInfo,
WebServExp, WSDLBind, XMLSchema, WSDLPub, SOAPPasInv, SOAPHTTPPasInv,
SOAPHTTPDisp, WebBrokerSOAP;
type
TWebModule1 = class(TWebModule)
HTTPSoapDispatcher1: THTTPSoapDispatcher;
HTTPSoapPascalInvoker1: THTTPSoapPascalInvoker;
WSDLHTMLPublish1: TWSDLHTMLPublish;
procedure WebModule1DefaultHandlerAction(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;
var
WebModule1: TWebModule1;
implementation
{$R *.dfm}
procedure TWebModule1.WebModule1DefaultHandlerAction(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
begin
WSDLHTMLPublish1.ServiceInfo(Sender, Request, Response, Handled);
end;
end.
////////////////////////////////////
{ Invokable interface Iddd }
unit dddIntf;
interface
uses InvokeRegistry, Types, XSBuiltIns;
type
{ Invokable interfaces must derive from IInvokable }
Iddd = interface(IInvokable)
['{6451BBF0-8E11-4F08-A0B0-D71E033A85B9}']
function geta:widestring;stdcall;
{ Methods of Invokable interface must not use the default }
{ calling convention; stdcall is recommended }
end;
implementation
initialization
{ Invokable interfaces must be registered }
InvRegistry.RegisterInterface(TypeInfo(Iddd));
end.
////////////////////////////////
{ Invokable implementation File for Tddd which implements Iddd }
unit dddImpl;
interface
uses InvokeRegistry, Types, XSBuiltIns, dddIntf;
type
{ Tddd }
Tddd = class(TInvokableClass, Iddd)
public
function geta:widestring;stdcall;
end;
implementation
function tddd.geta:widestring;
begin
result:='hello world!';
end;
initialization
{ Invokable classes must be registered }
InvRegistry.RegisterInvokableClass(Tddd);
end.
Top
20 楼outer2000(天外流星)回复于 2002-10-10 08:50:16 得分 0
chechy(为程序而奋斗)
我的幽香
outer_star@371.net
QQ:6529478
谢谢;Top




