2012-05-31 25 views
5

私に提供され、添付ファイル付きのSOAPを通信手段として使用するWebサービスを使用する必要があります。また、authencationの形式(ユーザーとプレーンテキストで渡す)としてWS-Security 1.0を使用します。VB.NETの添付ファイル付きSOAP

私はVB.NETに取り組んでおり、Webサービスに関する私の経験は非常にスリムで、WCF Webサービスを作成し、別のプロジェクトでサービス参照を追加してプロキシクラスを作成し、メソッドを使用するようになります。

私はインターネットを検索し、VB.NETでSwAのネイティブサポートがないことを確認しました。これは正しいですか? コミュニケーションにどのように近づき、どこでこれらの概念をよりよく理解できるかを示す例が優れています。

答えて

1

最近の私のプロジェクトでは、C#でsoap WebServiceと通信する必要がありました。それに対処するために、私は完全なsoapenvelopeを文字列で作り、それをHttpWebRequestを使ってWebサービスに送りました。 WebResponsを使用すると、Webサービスの応答を読み込んで、文字列に戻すことができます。この文字列をXmlDocumentに変換して、必要なオブジェクトを読み込むことができます。

あなたが簡単にあなたのウェブの正しいたSOAPEnvelope構文を取得するには(このようにそれをしなかった)

をあなたがループして欲しいと(必要な場合)のSOAPEnvelopeを作り、またのSOAPEnvelopeのヘッダにAUTHENCATIONを置くことができますサービス私は多くの助けになる素晴らしい小さなアプリケーションであるSOAPUIの使用をお勧めします!このようにして、どこにauthencationを配置するかを気付くでしょう。

+0

私の問題は添付ファイルです。プロジェクトでもそれを使って作業していますか? – seth

+0

添付ファイルを使って正確に何を意味しますか?これの例を挙げることはできますか? – Kevinc

+0

私はxmlファイルを持っているので、soap要求と一緒に送る必要があります。私が読んだところからは、.NETではこれがサポートされていないように見えますが、これが何を意味するのか分かりません。 – seth

1

添付ファイルのデータをバイト配列に入れて送信するだけではどうですか?これらの線に沿って何かを持つバイト配列(この関数に渡し、取り付けのためのストリームをオープン)にあなたのファイルをストリーミング

Public Class SoapPackage 
    Public Property AttachmentName() As String 
     Get 
      Return m_AttachmentName 
     End Get 
     Set 
      m_AttachmentName = Value 
     End Set 
    End Property 
    Private m_AttachmentName As String 

    ' put your file data in here 
    Public Property AttachmentData() As Byte() 
     Get 
      Return m_AttachmentData 
     End Get 
     Set 
      m_AttachmentData = Value 
     End Set 
    End Property 
    Private m_AttachmentData As Byte() 
End Class 

Public Shared Function StreamToByteArray(input As Stream) As Byte() 
    Dim buffer As Byte() = New Byte(16 * 1024 - 1) {} 
    Using ms As New MemoryStream() 
     Dim read As Integer 
     While (InlineAssignHelper(read, input.Read(buffer, 0, buffer.Length))) > 0 
      ms.Write(buffer, 0, read) 
     End While 
     Return ms.ToArray() 
    End Using 
End Function 

編集:

はちょうどそれを学びました私のStreamToByteArray機能は簡単に置き換えることができます:

Dim filePath as String = "Path\to\file" 
Dim fileBytes as Byte() = System.IO.File.ReadAllBytes(filePath) 
0

faここから私が知ることができるように:http://www.w3.org/TR/SOAP-attachments添付ファイルはメッセージの本文内にインラインで移動する必要があります。つまり、メッセージを作成するためにKevinとTomの回答を組み合わせる必要があります。

私は、添付ファイル付きSOAPは標準ではなく提出物であるように見えることに注意しました。

「そのまま」Webサービスを使用しなければならないとすれば、可能であればサービス作成者/サプライヤからいくつかの追加データや例を入手しようとします。

関連する問題