2016-09-19 2 views
0

Проведя много времени на исследованиях, пытаясь использовать различные подходы, я решил задать здесь вопрос, так как сейчас я не в курсе. То, что я хочу достичь, это называют операцию sendDocument на веб-сервиса, который находится прямо здесь:C# WSDL - метод вызова и получение ответа

https://test-bramka.edeklaracje.gov.pl/uslugi/dokumenty?wsdl 

Я добавил ссылку на службу к моему проекту VS успешно. Тогда я попытался сделать это, как и все предлагал через Интернет:

eDeklaracjeTest client = new eDeklaracjeTest(); 
client.sendDocument(b1); 

Но VS продолжает говорить мне, что eDeklaracjeTest это пространство имен, но используется как тип. При объявлении это нравится:

var client = new eDeklaracjeTest.sendDocument(); 

Это звучит правильно и после этого я могу сделать:

client.document = b1; 

Но это не вызывается метод sendDocument. Что не так с моим звонком? Как правильно вызвать sendDocument, чтобы я мог подтвердить, что мой запрос был получен и как я могу получить ответ?

ОБНОВЛЕНИЕ После нескольких часов исследований и одного вопроса для коллеги с работы я наконец получил ответ (благодаря CodeCaster, так как его помощь также была очень полезной). Правильный код для этого WebService выглядит так:

eDeklaracjeTest.sendDocumentResponse resp; 
byte[] b1 = null; 
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; }; 
var client = new eDeklaracjeTest.GateServicePortTypeClient("GateServiceSOAP11port"); 
var documentToSend = new eDeklaracjeTest.sendDocument(); 
documentToSend.document = b1; 
client.Open(); 
resp = client.sendDocument(documentToSend); 

Спасибо всем, кто пытался помочь мне в этом вопросе.

+0

При добавлении ссылки на службу вы ввели пространство имен 'eDeklaracjeTest'? Затем вам понадобится новый eDeklaracjeTest. {SomeServiceName} Client(). – CodeCaster

+0

Да, пространство имен было eDeklaracjeTest. Однако добавив его, как вы предложили, - eDeklaracjeTest client = new eDeklaracjeTest {sendDocument} .Client(); results in Имя 'sendDocument' не существует в текущей ошибке контекста. –

+0

Да, откройте браузер объектов и проверьте, какие имена _do_ существуют в этом пространстве имен. – CodeCaster

ответ

0

Да, у вас нет скобки () при создании класса прокси-сервера службы. Он должен быть

var client = new eDeklaracjeTest().sendDocument(); 
+0

Когда определено, как вы предполагали, происходит ошибка, как на снимке экрана http://i63.tinypic.com/zkrec0.png. –

+0

@MariuszMizgier, опубликуйте текст ошибки вместо рисунка и, кроме того, ваш рисунок ничего не показывает.Также отправьте код – Rahul

+0

Я попытался сделать это с вашим предложением: var client = new eDeklaracjeTest(). SendDocument(); client.document = b1; Но VS 2015 продолжает утверждать, что eDeklaracjeTest является пространством имен, но используется как тип. Если бы вы могли направить меня, что еще я должен предоставить (я только что добавил ссылку на службу в проект VS), я был бы благодарен. b1 definition - byte [] b1 = System.Text.Encoding.UTF8.GetBytes (xmlSigned); –

Смежные вопросы