いつもお世話になっておりますm(_ _ )m
先週ぐらいから、初めてVisual Basicを触りました。
仕事でVisual Basicを扱いはじめたばっかりなのに、解決できないことがでてきまして、、、質問させていただきます。
YahooのApiのwsdlを元に、Visual Studioの開発コマンドwsdl.exe
を使って、soapのクライアントコード(?)を自動生成しました。
https://ss.yahooapis.jp/services/V6.0/LocationService?wsdl
C:\Program Files\Microsoft Visual Studio 14.0>wsdl /l:VB https://ss.yahooapis.jp/services/V6.0/LocationService?wsdl /out:C:\Users\user_name\Desktop\
↑のコマンドを実行して生成されたvbコードをプロジェクトに追加して、コード上でインスタンス化しようとしました。
しかし、エラーが発生し、解消できなくて困っています。
※ちなみに、ビルドはうまくいっていて、アプリケーションも動作しています。
該当のコードが動作するとエラーが発生するという感じです。
環境
- Visual Studio 2015 Community
- .Net Framework 4.5.1
- Windows7
呼び元のコード
至って普通かなと思います。
visual
1Dim LocationServiceWsdl As New LocationService()
Try Catch
で↑のコードを囲んでいて、エラーの内容が
Message: メソッド LocationService.get を反映できません。 InnnerException: 'SoapHeader' を反映中にエラーが発生しました。 場所 System.Web.Services.Protocols.SoapReflector.ReflectMethod(LogicalMethodInfo methodInfo, Boolean client, XmlReflectionImporter xmlImporter, SoapReflectionImporter soapImporter, String defaultNs) 場所 System.Web.Services.Protocols.SoapClientType.GenerateXmlMappings(Type type, ArrayList soapMethodList, String serviceNamespace, Boolean serviceDefaultIsEncoded, ArrayList mappings) 場所 System.Web.Services.Protocols.SoapClientType..ctor(Type type) 場所 System.Web.Services.Protocols.SoapHttpClientProtocol..ctor() // ...省略
LocationService()
のコードを覗いてみると、下記コードでエラーが発生しているかなと思います。
visual
1 <System.Web.Services.Protocols.SoapHeaderAttribute("RequestHeader"), 2 System.Web.Services.Protocols.SoapHeaderAttribute("ResponseHeader", Direction:=System.Web.Services.Protocols.SoapHeaderDirection.Out), 3 System.Web.Services.Protocols.SoapDocumentMethodAttribute("", RequestNamespace:="http://ss.yahooapis.jp/V6", ResponseNamespace:="http://ss.yahooapis.jp/V6", Use:=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle:=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)> 4 Public Function [get](ByVal accountId As Long, <System.Xml.Serialization.XmlElementAttribute("error")> ByRef [error]() As [Error]) As <System.Xml.Serialization.XmlElementAttribute("rval")> LocationReturnValue 5 Dim results() As Object = Me.Invoke("get", New Object() {accountId}) '<- ここじゃないかなと思います 6 [error] = CType(results(1), [Error]()) 7 Return CType(results(0), LocationReturnValue) 8 End Function
色々な記事をあさりましたが、使い方がそもそも間違っているのか
それとも該当のコードが今のバージョンにそっていないか等、ヒントらしいヒントが見つけられなくて
もうそろそろお助けを願いたいところです。。。orz
お手数をおかけしますが、よろしくお願いいたします。

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/10/03 12:18
退会済みユーザー
2016/10/03 12:42
2016/10/03 22:05