Клиент SOAP в C# без доступа к файлу WSDL

Это должно быть просто нарезкой.

small = np.random.rand(100, 100, 100)
big = np.zeros((1000, 1000, 100), dtype=np.int16)

Если вы хотите добиться большого из множества маленьких, вот еще один способ.

big = np.concatenate([small] * (big.shape[0] // small.shape[0]), axis=1)
big = np.concatenate([big] * (big.shape[1] // small.shape[1]), axis=0)

Существует разница в скорости. Цикл лучше.

13
задан Kristoffer L 10 November 2008 в 14:51
поделиться

3 ответа

Если Вы пишете класс, который происходит из System.Web.Services.Protocols.SoapHttpClientProtocol (и имеет корректные атрибуты, например, WebServiceBinding, SoapDocumentMethod, и т.д. относившийся это и его методы), можно довольно легко назвать методы SOAP, не нуждаясь в файле WSDL.

Самый легкий способ сделать это должно было бы, вероятно, записать Ваш собственный веб-сервис ASP.NET, который копирует SOAP третьего лица API, генерируйте прокси-класс от него, затем вручную отредактируйте файл, чтобы гарантировать, что URL, пространства имен, имена методов, типы параметра, и т.д. корректен для стороннего API, который Вы хотите назвать.

4
ответ дан 2 December 2019 в 00:47
поделиться

Я не создал интерфейс SOAP без доступа к файлу WSDL, но формат довольно хорошо зарегистрирован. Ваш лучший выбор мог бы состоять в том, чтобы создать упрощенный собственный файл WSDL, который отражает то, что Вы знаете сервиса, на который Вы подписываетесь....

Если Вы решаете пойти этим путем, существующий stackoverflow вопрос указывает на некоторые инструменты для проверки Вашего WSDL.

1
ответ дан 2 December 2019 в 00:47
поделиться

код здесь находится в VB.NET, но я думаю, что Вы получите идею. Следующее является клиентом, который вызывает 'processConfirmation' метод, и это ожидает ответ (MyBase. SendRequestResponse).

Imports Microsoft.Web.Services3
Imports Microsoft.Web.Services3.Addressing
Imports Microsoft.Web.Services3.Messaging

Namespace Logic
    Public Class HTTPClient
        Inherits Soapclient

        Sub New(ByVal destination As EndpointReference)
            MyBase.Destination = destination
        End Sub

        <SoapMethod("processConfirmation")> _
        Public Function processConfirmation(ByVal envelope As SoapEnvelope) As SoapEnvelope
            Return MyBase.SendRequestResponse("processConfirmation", envelope)
        End Function
    End Class
End Namespace

И Вы используете его путем выполнения следующего:

Dim hc As New HTTPClient(New Microsoft.Web.Services3.Addressing.EndpointReference(New System.Uri("http://whatever.srv")))

Dim envelope As New Microsoft.Web.Services3.SoapEnvelope
Dim doc As New Xml.XmlDocument
doc.LoadXml("<hey>there</hey>")
envelope.SetBodyObject(doc)

Dim return_envelope As Microsoft.Web.Services3.SoapEnvelope = hc.processConfirmation(envelope)

Я думаю, что это должно работать.... успех!

1
ответ дан 2 December 2019 в 00:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: