Спрашивающий
Как задать входные параметры функции, описанные как (string @params)

Общие обсуждения
-
В VS 2008 на C# был автоматически создан вебклиент на основании wsdl документа, т.е прокси класс со всеми методами вебсервиса. В этом прокси классе есть метод описанный как
[System.Web.Services.Protocols.SoapRpcMethodAttribute("http://iwayex.com/sob/api/literal#booker", RequestNamespace="http://iwayex.com/sob/api/literal", ResponseNamespace="http://iwayex.com/sob/api/literal", Use=System.Web.Services.Description.SoapBindingUse.Literal)]
[return: System.Xml.Serialization.XmlElementAttribute("return")]
public string booker(string @params) {
object[] results = this.Invoke("booker", new object[] {
@params});
return ((string)(results[0]));
}
Как мне задать входные параметры для вызова этого метода? Сигнатура метода выглядит так.
public string booker(string params)
После серриализации эти params должны превратиться в xml
<Params>
<Transaction></Transaction>
<PriceID>6899</PriceID>
<Price>54.69</Price>
<DateArrival>2012-03-28 18:00</DateArrival><DateDeparture></DateDeparture>
<ArrivalNumber></ArrivalNumber><DepartureNumber>SW760</DepartureNumber>
<Address>Ленина, 93</Address><LocationAddress></LocationAddress>
<DestinationAddress></DestinationAddress><FirstName>Олег</FirstName>
<LastName>Мотвеев</LastName><Phone>79137263762</Phone><Email>tetrad123@yandex.ru</Email>
<Passangers>1</Passangers><Table></Table><Currency>EUR</Currency><Notes>Багаж</Notes>
<PayableStatus>1</PayableStatus><SendParams></SendParams></Params>
Что должна содержать строка params?
- Изменен тип Dmitriy VereshchakMicrosoft contingent staff, Moderator 30 сентября 2014 г. 14:16 Тема переведена в разряд обсуждений по причине отсутствия активности.
4 сентября 2014 г. 10:32
Все ответы
-
Судя по всему или обычную строку или строку XML, которая впоследствии будет десериализована на сервере.
Сделаем содержимое сообщества лучше, вместе!
7 сентября 2014 г. 9:43Модератор -
xml-строка вызывает runtime error,
Что Вы подразумеваете под обычной строкой?
8 сентября 2014 г. 8:56 -
"xml-строка вызывает runtime error," - есть возможность посмотреть какая именно ошибка выдаётся?
"Что Вы подразумеваете под обычной строкой?" - не XML строку.
Сделаем содержимое сообщества лучше, вместе!
8 сентября 2014 г. 8:58Модератор -
Обычно инвок используют для генериков, может так? или я не понял вопроса
public string booker<T>(params string[] param) where T : class, new() { var type = (new T() as object).GetType(); var constructor = type.GetConstructor(Type.EmptyTypes); var result = constructor.Invoke(param); return (result as string); }
if (Thread.Was == HelpFul) Mark.As(HelpFul); else if (Thread.Was == Answered) Mark.As(Answered); else Provide(More.Details);
8 сентября 2014 г. 17:56 -
Provide(More.Details)9 сентября 2014 г. 16:17
-
Это вы должны Provide(More.Details)
if (Thread.Was == HelpFul) Mark.As(HelpFul); else if (Thread.Was == Answered) Mark.As(Answered); else Provide(More.Details);
11 сентября 2014 г. 6:12 -
Вылетает на строке
object[] results = this.Invoke("booker", new object[] {
@params});Ошибка:
Call to a member function convert() on a non-object
11 сентября 2014 г. 8:56 -
Там в wsdl входные параметры не описаны, я такое первый раз вижу
http://iwayex.com/sob/api/literalwsdl
11 сентября 2014 г. 12:53 -
Я задала входные параметры. На них отладчик не ругается.
Теперь он выдает SOAP-ERROR
Где возникает ошибка, на стороне клиента или на стороне сервера?
Как мне посмотреть SOAP message в XML, который я отсылаю?
Как мне посмотреть ответ сервера в XML, который я получаю?
Вот описание ошибки:
System.Web.Services.Protocols.SoapHeaderException was unhandled
Message="SOAP-ERROR: Encoding: Violation of encoding rules"
Source="System.Web.Services"
Actor=""
Lang=""
Node=""
Role=""
StackTrace:
at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
at IBFmain.iwayex.Booker_Sob_AmazingService.booker(Object[] params) in C:\Documents and Settings\44\Desktop\IBFmain\IBFmain\IBFmain\Web References\iwayex\Reference.cs:line 956
at IBFmain.IWay.booker_Click(Object sender, EventArgs e) in C:\Documents and Settings\44\Desktop\IBFmain\IBFmain\IBFmain\IWay.cs:line 67
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.Run(Form mainForm)
at IBFmain.Program.Main() in C:\Documents and Settings\44\Desktop\IBFmain\IBFmain\IBFmain\Program.cs:line 20
at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
at System.AppDomain.nExecuteAssembly(Assembly assembly, String[] args)
at System.Runtime.Hosting.ManifestRunner.Run(Boolean checkAptModel)
at System.Runtime.Hosting.ManifestRunner.ExecuteAsAssembly()
at System.Runtime.Hosting.ApplicationActivator.CreateInstance(ActivationContext activationContext, String[] activationCustomData)
at System.Runtime.Hosting.ApplicationActivator.CreateInstance(ActivationContext activationContext)
at System.Activator.CreateInstance(ActivationContext activationContext)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssemblyDebugInZone()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
InnerException:
16 сентября 2014 г. 13:41