2016-07-10 13 views
0

SOAP Webサービスのメソッドにパラメータを渡したいとします。ユーザーが予約を追加すると、WebサービスでsmsSend()メソッドに電話したいと思います。asp.net mvcを使用してSOAP Webサービスにパラメータを渡す方法4

[HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult AddBooking(booking bk) 
    { 
     if(ModelState.IsValid) 
     {     
      db.bookings.Add(bk); 
      db.SaveChanges(); 
      return RedirectToAction("Index", "Home"); 
     } 
     return View(bk); 
    } 

私は多くの検索を行っていますが、何も私のために働いていません。誰かが私にパラメータをWebサービスに渡す手伝いをすることができますか?

答えて

0

Visual Studioを使用している場合は、サービス参照を外部サービスに追加できます。 Visual Studioでは、参照に強く型付けされたC#バインディングが作成されます。追加するには、SOAPサービスのURLが必要です。 (プロセスがWebアプリでも同じです)、ここでスタックオーバーフローの質問を参照してください:

How to add a web service reference in Visual Studio 2015 to a console app

プロセスのためのMSDNのドキュメントへのリンクはこちらです:

https://msdn.microsoft.com/en-us/library/bb628652.aspx

あなたが持ったらService Referenceが追加されました。サービスを追加したときに設定した名前空間を含むusingディレクティブを追加するだけで、Visual Studioによって作成されたバインディングを使用してサービスを使用できます。

[サービス参照の追加]が表示されない場合は、この機能を持たない.NETコアプロジェクトを使用している可能性があります。

編集リンクされた特定のサービスに関する情報を追加する:

using SmsTest.SmsService; 

namespace SmsTest 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      var msg = "Your SMS Message"; 
      var serviceProviderId = 42; 

      // Use the constructor overloads for ServiceClient to configure how to connect 
      var service = new MyServiceClient(); 
      service.smsSend(serviceProviderId, msg); 
     } 
    } 
} 

これは、あなたがSmsServiceとしてSmsTestとしての私のプログラムのデフォルトの名前空間とサービス参照の名前空間で提供された情報を使用しています。

+0

Visual Studioで作成したバインディングには、サービスを呼び出すメソッドを持つクラスが必要です。これらのメソッドには、Webサービスが期待するものによって定義された特定のメソッドにデータを渡すためのパラメータが必要です。あなたが私たちにSOAPサービスのURLまたはドキュメントを提供した場合は、もう少しお手伝いできます。 –

+0

'public ActionResult AddBooking(予約bk) { if(ModelState.IsValid) { db.bookings.Add(bk); db.SaveChanges(); var msg = "あなたのサービスは" + bk.tContactNum; var emID = bk.SE_ID; var service = new GuideMeService(); service.smsSend(emID、msg); return RedirectToAction( "Index"、 "Home"); } リターンビュー(bk); } 'は私の答えですが、無効な引数があることを示しています – hmal

+0

SE_IDが1であると仮定して、サービスプロバイダIDは整数である必要があります。私はそれが何を指定しているかは分かりませんが、ドキュメントを確認できます。それ以外の場合は、クライアントコンストラクタのオーバーロードをチェックアウトします。接続するために渡す必要のある接続情報が存在する可能性があります。 –

関連する問題