Visual Studioでサービスリファレンスを使用するのが初めてで、Java Webサービスを使用しようとしています。ウィザードを使用してService Referenceを追加しました。ウィザードはプロキシコードを作成し、設定ファイルにエンドポイントを追加しました。サービス参照からJava Webサービスへの呼び出しで何も返されない
Javaエンドポイントは、単一のパラメータとしてカスタムタイプを取ります。私はプロキシオブジェクトを介してオブジェクトにデータを設定し、その呼び出しをサービスに渡しました。しかし、応答オブジェクトを見ると、すべてのプロパティがnullになります。エラーはスローされません。私がsoapUIを使用するとき、私はXMLを編集してサービスに送信し、正常に応答することに注意してください。エラーが発生した場合は、soapUIで返されたXMLエラーメッセージを表示できます。
static void CallJavaEndPoint()
{
IFX_ProductInqRq inqRQ = new IFX_ProductInqRq();
IFX_ProductInqRqCatSvcRq[] CatSvcRqCollection = new IFX_ProductInqRqCatSvcRq[1];
IFX_ProductInqRqCatSvcRq CatSvcRqItem = new IFX_ProductInqRqCatSvcRq();
IFX_ProductServiceReference.FX_Product_PortTypeClient proxy = new FX_Product_PortTypeClient();
IFX_ProductInqRs response;
// Remove other code for setting properties for brevity
CatSvcRqItem.RequestID = "123456";
CatSvcRqCollection[0] = CatSvcRqItem;
inqRQ.CatSvcRq = CatSvcRqCollection;
// reponse just comes back null, no errors
response = proxy.IFX_CustomerAccountDetailInquiry(inqRQ);
}
設定ファイルから:ここで
は、呼び出し元のコードである
<basicHttpBinding>
<binding name="IFX_Product_Binding" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="Transport">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
<binding name="IFX_Product_Binding1" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="https://example.com/EX_IFXProduct/services/Product_SoapPort_1234"
binding="basicHttpBinding" bindingConfiguration="IFX_Product_Binding"
contract="IFX_ProductServiceReference.IFX_Product_PortType"
name="Product_SoapPort_1234" />
</client>
質問:
- 私が正しくJavaのWebサービスを呼び出していますか?
- 返されるXMLエラーをどのように表示しますか?
- Web ReferenceまたはWebRequest/HttpWebRequestを使用してこのJava Webサービスに接続する方がよいでしょうか?
Tried Fiddlerはリクエストを送信しますが、サービスは応答を返送しません。 Fiddlerに表示されているXMLをコピーしてsoapUIで使用すると、メッセージが返されます。私は設定情報を変更する必要があるかどうか疑問に思っています。 – Josh