Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.046 c
15-1216058333
GrayFace
2008-07-14 21:58
2008.09.14
Система контроля версий кода для VS2005 для удаленной работы


15-1216808213
Vlad Oshin
2008-07-23 14:16
2008.09.14
V:Variant; В чем разница? V:=varEmpty, V:=null, V := Unassigned;


3-1204711854
Ega23
2008-03-05 13:10
2008.09.14
Порядок таблиц в left join


3-1205489996
Павел Калугин
2008-03-14 13:19
2008.09.14
Грабли с MySql


15-1216655854
ПостОвый терминатор
2008-07-21 19:57
2008.09.14
О полномочиях





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский