Форум: "Начинающим";
Текущий архив: 2008.09.14;
Скачать: [xml.tar.bz2];
ВнизРабота с веб-сервисом. Найти похожие ветки
← →
Kolan © (2008-07-29 17:21) [0]Здравствуйте,
Пробую воспользоватьс веб-сервисом RSDN (http://www.rsdn.ru/ws/janusAT.asmx?WSDL).
С помощью BDS 2006 создал Web service -> WSDL Inporter. Все сгенерировалось. Интерфейс такой:JanusATSoap = interface(IInvokable)
["{F931A43E-480A-68B9-5A5F-E770117BFE0C}"]
function GetTopicByMessage(const topicRequest: TopicRequest): TopicResponse; stdcall;
function GetNewData(const changeRequest: ChangeRequest): ChangeResponse; stdcall;
function GetForumList(const forumRequest: ForumRequest): ForumResponse; stdcall;
function GetNewUsers(const userRequest: UserRequest): UserResponse; stdcall;
procedure PostChange(const postRequest: PostRequest); stdcall;
function PostChangeCommit: PostResponse; stdcall;
procedure Check; stdcall;
end;
Теперь патаюсь что-нить вызвать.procedure TForm1.BitBtn1Click(Sender: TObject);
var
R: UserRequest;
A: UserResponse;
I: Integer;
P: PostResponse;
begin
R := UserRequest.Create;
try
R.userName := UserNameEdit.Text;
R.password := PasswordEdit.Text;
R.maxOutput := 1;
A := GetJanusATSoap.GetNewUsers(R);
for I := Low(A.users) to High(A.users) do
Memo1.Lines.Add(A.users[I].userName);
finally
R.Free;
end;
end;
На что получаю ошибку:Object reference not set to an instance of an object
Что я делаю не так?
ЗЫ
ВызовCheck;
срабатывает.
← →
Kolan © (2008-07-29 17:27) [1]Использующиеся классы:
UserRequest = class(TRemotable)
private
FuserName: WideString;
Fpassword: WideString;
FlastRowVersion: TByteDynArray;
FmaxOutput: Integer;
published
property userName: WideString read FuserName write FuserName;
property password: WideString read Fpassword write Fpassword;
property lastRowVersion: TByteDynArray read FlastRowVersion write FlastRowVersion;
property maxOutput: Integer read FmaxOutput write FmaxOutput;
end;
UserResponse = class(TRemotable)
private
FlastRowVersion: TByteDynArray;
Fusers: ArrayOfJanusUserInfo;
public
destructor Destroy; override;
published
property lastRowVersion: TByteDynArray read FlastRowVersion write FlastRowVersion;
property users: ArrayOfJanusUserInfo read Fusers write Fusers;
end;
PostResponse = class(TRemotable)
private
FcommitedIds: ArrayOfInt;
Fexceptions: ArrayOfPostExceptionInfo;
FcommitedRatingIds: ArrayOfInt;
FratingExceptions: ArrayOfRatingExceptionInfo;
FcommitedModerateIds: ArrayOfInt;
FmoderateExceptions: ArrayOfModerateExceptionInfo;
public
destructor Destroy; override;
published
property commitedIds: ArrayOfInt read FcommitedIds write FcommitedIds;
property exceptions: ArrayOfPostExceptionInfo read Fexceptions write Fexceptions;
property commitedRatingIds: ArrayOfInt read FcommitedRatingIds write FcommitedRatingIds;
property ratingExceptions: ArrayOfRatingExceptionInfo read FratingExceptions write FratingExceptions;
property commitedModerateIds: ArrayOfInt read FcommitedModerateIds write FcommitedModerateIds;
property moderateExceptions: ArrayOfModerateExceptionInfo read FmoderateExceptions write FmoderateExceptions;
end;
← →
Alucard (2008-07-30 00:14) [2]Проблема может быть в использовании WideString. Не могу сказать о BDS2006, но в более ранних версиях она была. Проверьте работоспособность методов, обходящихся без WideString, а также присутствие обработки этого типа в исходном коде VCL.
← →
Kolan © (2008-07-30 11:54) [3]> Проверьте работоспособность методов, обходящихся без WideString
Check не ругается, но он без параметров.
> также присутствие обработки этого типа в исходном коде VCL
Как это сделать? И что подразумевается под VCL, сгенерированный код? Или вы предлагаете смотреть генофонд? Что там искать?
← →
Kolan © (2008-08-02 16:39) [4]up
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.09.14;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.093 c