検索
ホームページphp教程php手册PHP が Web サービス アプリケーションを呼び出す方法の概要
PHP が Web サービス アプリケーションを呼び出す方法の概要Jun 13, 2016 am 11:56 AM
phpservicewebwebservicexml導入基本的な考え方どうやって応用移行

1.1、Web Service基本概念

Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。是:通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI进行注册。

XML:(Extensible Markup Language)扩展型可标记语言。面向短期的临时数据处理、面向万维网络,是Soap的基础。

Soap:(Simple Object Access Protocol)简单对象存取协议。是XML Web Service 的通信协议。当用户通过UDDI找到你的WSDL描述文档后,他通过可以SOAP调用你建立的Web服务中的一个或多个操作。SOAP是XML文档形式的调用方法的规范,它可以支持不同的底层接口,像HTTP(S)或者SMTP。

WSDL:(Web Services Description Language) WSDL 文件是一个 XML 文档,用于说明一组 SOAP 消息以及如何交换这些消息。大多数情况下由软件自动生成和使用。

UDDI (Universal Description, Discovery, and Integration) 是一个主要针对Web服务供应商和使用者的新项目。在用户能够调用Web服务之前,必须确定这个服务内包含哪些商务方法,找到被调用的接口定义,还要在服务端来编制软件,UDDI是一种根据描述文档来引导系统查找相应服务的机制。UDDI利用SOAP消息机制(标准的XML/HTTP)来发布,编辑,浏览以及查找注册信息。它采用XML格式来封装各种不同类型的数据,并且发送到注册中心或者由注册中心来返回需要的数据。

1.2、XML Web Service的特点

Web Service的主要目标是跨平台的可互操作性。为了实现这一目标,Web Service 完全基于XML(可扩展标记语言)、XSD(XML Schema)等独立于平台、独立于软件供应商的标准,是创建可互操作的、分布式应用程序的新平台。因此使用Web Service有许多优点:

1、跨防火墙的通信

如果应用程序有成千上万的用户,而且分布在世界各地,那么客户端和服务器之间的通信将是一个棘手的问题。因为客户端和服务器之间通常会有防火墙或者代理服务器。传统的做法是,选择用浏览器作为客户端,写下一大堆ASP页面,把应用程序的中间层暴露给最终用户。这样做的结果是开发难度大,程序很难维护。 要是客户端代码不再如此依赖于HTML表单,客户端的编程就简单多了。如果中间层组件换成Web Service的话,就可以从用户界面直接调用中间层组件,从而省掉建立ASP页面的那一步。要调用Web Service,可以直接使用Microsoft SOAP Toolkit或.net这样的SOAP客户端,也可以使用自己开发的SOAP客户端,然后把它和应用程序连接起来。不仅缩短了开发周期,还减少了代码复杂度,并能够增强应用程序的可维护性。同时,应用程序也不再需要在每次调用中间层组件时,都跳转到相应的"结果页"。

2、应用程序集成

企业级的应用程序开发者都知道,企业里经常都要把用不同语言写成的、在不同平台上运行的各种程序集成起来,而这种集成将花费很大的开发力量。应用程序经常需要从运行的一台主机上的程序中获取数据;或者把数据发送到主机或其它平台应用程序中去。即使在同一个平台上,不同软件厂商生产的各种软件也常常需要集成起来。通过Web Service,应用程序可以用标准的方法把功能和数据"暴露"出来,供其它应用程序使用。

XML Web services 提供了在松耦合环境中使用标准协议(HTTP、XML、SOAP 和 WSDL)交换消息的能力。消息可以是结构化的、带类型的,也可以是松散定义的。

3、B2B的集成

B2B 指的是Business to Business,as in businesses doing business with other businesses,商家(泛指企业)对商家的电子商务,即企业与企业之间通过互联网进行产品、服务及信息的交换。通俗的说法是指进行电子商务交易的供需双方都是商家(或企业、公司),她们使用了Internet的技术或各种商务网络平台,完成商务交易的过程。

Web サービスは B2B 統合を成功させる鍵です。 Web サービスを通じて、企業は指定されたサプライヤーや顧客に主要なビジネス アプリケーションを単に「公開」することができます。Web サービスはインターネット上で実行され、世界中のどこでも簡単に実装でき、運用コストは比較的低くなります。 Web サービスは B2B 統合の重要な部分にすぎず、統合を実現するには他の多くの部分が必要です。 Web サービスを使用して B2B 統合を実装する最大の利点は、相互運用性を簡単に実現できることです。ビジネス ロジックが「公開」され、Web サービスになる限り、指定されたパートナーは、システムがどのプラットフォームで実行されているか、またはどの開発言語が使用されているかに関係なく、これらのビジネス ロジックを呼び出すことができます。これにより、B2B 統合にかかる時間とコストが大幅に削減されます。

4. ソフトウェアとデータの再利用

Web サービスは、コードの再利用を許可しながら、コードの背後でデータを再利用できます。 Web サービスを使用すると、以前のようにサードパーティからソフトウェア コンポーネントを購入してインストールする必要がなくなり、アプリケーションからこれらのコンポーネントを呼び出すだけで済みます。ソフトウェアの再利用のもう 1 つの状況は、複数のアプリケーションの機能を統合し、Web サービスを通じてそれらを「公開」することです。これらすべての機能をポータル サイトに簡単に統合し、統一された使いやすいインターフェイスをユーザーに提供できます。 サードパーティの Web サービスが提供する機能をアプリケーションで使用したり、独自のアプリケーション機能を Web サービスを通じて他のユーザーに提供したりできます。どちらの場合も、コードとその背後にあるデータは再利用できます。

上記の説明からわかるように、Web サービスは、Web を介して相互運用したり、リモート呼び出しを行ったりする場合に最も役立ちます。ただし、Web サービスがまったくメリットをもたらさない状況もあります。Web サービスには次のような欠点があります。

1. スタンドアロン アプリケーション

現在、企業や個人は依然として多くのデスクトップ アプリケーションを使用しています。それらの中には、単にマシン上の他のプログラムと通信する必要があるものもあります。この場合、Web サービスを使用せず、ローカル API を使用するのが最善です。 COM は小さくて高速であるため、この状況での作業に最適です。同じサーバー上で実行されているサーバー ソフトウェアについても同様です。もちろん、このような状況でも Web サービスを使用することはできますが、消費量が多すぎるだけでなく、何のメリットもありません。

2. LAN のいくつかのアプリケーション

多くのアプリケーションでは、すべてのプログラムが Windows プラットフォームで COM を使用し、同じ LAN 上で実行されます。これらのプログラムでは、SOAP/HTTP よりも DCOM を使用した方がはるかに効率的です。同様に、.net プログラムが LAN 上の別の .net プログラムに接続したい場合は、.net Remoting を使用する必要があります。実際、.net Remoting では、SOAP/HTTP を使用して Web サービス呼び出しを行うように指定することもできます。ただし、TCP 経由で直接 RPC 呼び出しを行う方がはるかに効率的です。

1.3. XML Web サービスのアプリケーション

1. オリジナルの XML Web サービスは、通常、株価、天気予報、スポーツのスコアなど、アプリケーションに簡単に組み込むことができる情報源です。

2. 既存のアプリケーションを XML Web サービスとして提供すると、より強力な新しいアプリケーションを構築し、XML Web サービスを構成要素として活用できます。

たとえば、ユーザーは、さまざまなサプライヤーから価格情報を自動的に取得する調達アプリケーションを開発できます。これにより、ユーザーはサプライヤーを選択し、注文を送信し、商品を受け取るまで商品の出荷を追跡できるようになります。サプライヤーのアプリケーションは、Web 上でサービスを提供するだけでなく、XML Web サービスを使用して顧客の信用を確認し、代金を回収し、運送会社との運送手続きを行うこともできます。

2.Webサービス開発

.net プラットフォームには、Web サービスの構築と使用を含む、Web サービスのサポートが組み込まれています。他の開発プラットフォームとは異なり、.net プラットフォームを使用すると、Web サービスの開発を完了するために他のツールや SDK は必要ありません。 .net Framework 自体は、サーバー側の要求プロセッサやクライアントによる SOAP メッセージの送受信のサポートなど、Web サービスを完全にサポートしています。次に、Microsoft Visual Studio .net 20058 (以下、VS.Net 2008) を使用して、簡単な Web サービスを作成して使用する手順を説明します。

2.1.

を使用して最も単純な Web サービスを作成します。

まず、VS2005 を開き、「ファイル - 新しい Web サイト」を開き、「ASP.NET Web サービス」を選択します

Service.cs コードを見ると、VS.Net 2005 が Web サービス ファイルのデフォルト フレームワークを確立していることがわかります。元のコードは次のとおりです:

コードをコピー コードは次のとおりです:

System を使用;
System.Web を使用;
Xml.Linq を使用; .org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
// ASP.NET AJAX の使用を許可するには スクリプトからこの Web サービスを呼び出すには、次の行のコメントを解除します。
// [System.Web.Script.Services.ScriptService]
public class Service : System.Web.Services.WebService
{
public Service () {
//デザインを使用する場合コンポーネントは、次の行のコメントを解除してください。
//InitializeComponent();
}
[WebMethod]
public string HelloWorld()
{
return "Hello World"; }
}
System を使用;
System.Linq を使用;
System.Web を使用;
System.Web.Services を使用;
System.Web.Services.Protocols を使用; 🎜>using System.Xml.Linq;
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
// To 許可するASP.NET AJAX を使用してスクリプトからこの Web サービスを呼び出す場合は、次の行のコメントを解除します。
// [System.Web.Script.Services.ScriptService]
public class Service: System.Web.Services.WebService
{
public Service () {
//デザインを使用する場合コンポーネントの場合は、以下をキャンセルしてください:
//initializecomponent ();
}
[webmedhod]
Public String HelloWorld ()
{
Return "Hello World"; > }
}


デフォルトのプロジェクトにはすでに Hello World メソッドが存在します。それを直接実行して効果を確認してください。



表示ページの図にある「HelloWorld」ハイパーリンクをクリックして、次のページに移動します:

「呼び出し」ボタンをクリックすると、以下に示すように XML 形式で返された Web サービスの結果が表示されます。これは、Web サービス環境に問題がないことを示しており、最も単純な Web サービスについても事前に連絡していました。

2.2. 関数を使用した単純な Web サービスの作成

上記では、Web サービスのマクロを理解しています。実際、これは外部の顧客が呼び出すことができる関数があります (注: 顧客が呼び出すことができない関数もあります)。がサーバーである場合、それを Web サービスとして作成し、それをクライアントに提供します (同時に呼び出しルールを提供します)。クライアントはサーバーから情報を取得するときに比較的透過的な状態にすることができます。クライアントはプロセスを理解せず (必要もありません)、データを取得するだけです。 コード ファイルで関数を作成し、この関数を外部から呼び出し可能なインターフェイス関数にしたい場合は、コード行 [WebMethod(関数の上に description="関数の説明情報")] を記述します。関数にこの宣言がない場合、ユーザーは関数を参照できません。簡単な Web サービスの例を作成してみましょう。

まずデフォルトの HelloWorld メソッドをコメントアウトし、単純に加算、減算、乗算、除算の 4 つのメソッドを記述します。

コードをコピー

コードは次のとおりです:

System を使用;
System.Web を使用;
Xml.Linq を使用; .org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
// ASP.NET AJAX の使用を許可するには スクリプトからこの Web サービスを呼び出すには、次の行のコメントを解除します。
// [System.Web.Script.Services.ScriptService]
public class Service : System.Web.Services.WebService
{
public Service () {
//デザインを使用する場合コンポーネント、次の行のコメントを解除してください。
//InitializeComponent();
}
//[WebMethod]
//public string HelloWorld()
//{
// return "Hello World";
//}
[WebMethod(Description = "Sum Method")]
public double add(double i, double j)
{
return i j ; > }
[WebMethod(Description = "差分を求めるメソッド")]
public double subject(double i, double j)
{
return i - j; > [WebMethod(Description = "求積法")]
public double multiplication(double i, double j)
{
return i * j;
}
[WebMethod (Description = 「商の求め方」)]
public double Division(double i, double j)
{ if (j != 0)
return i / j;
else
return 0;

System を使用;
System.Linq を使用;
System.Web を使用;
System.Web.Services を使用;
System.Web.Services.Protocols を使用;
System を使用。 Xml.Linq;
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
// ASP.NET の使用を許可するにはAJAX スクリプトからこの Web サービスを呼び出すには、次の行のコメントを解除します。
// [System.Web.Script.Services.ScriptService]
public class Service: System.Web.Services.WebService
{
public Service () {
//デザインを使用する場合コンポーネント、次の行のコメントを解除してください
// InitializeComponent(); return "Hello World";
//}
[WebMethod(Description = "Sum Method")]
public double add(double) i, double j)
{
return i j ;
}
[WebMethod(Description = "差分を求めるメソッド")]
public double subject(double i, double j)
{
return i - j;
}
(説明 = "商の求め方")]
public double Division(double i, double j)
{
if (j != 0)
return i / j;
else
return 0;
これを実行すると、以下に示すように、呼び出し可能なメソッドが記述されていることがわかります。



同様に追加メソッドをクリックして、追加メソッドの呼び出しページに入ります。



上の図に示すように、パラメーターの上にパラメーター i=3、j=3 を入力し、[呼び出し] をクリックすると、次のように XML 形式で返された Web サービスの結果 (i と j を追加した結果) が表示されます。以下

この時点で、Web サービスは実際にはそれほど神秘的ではないことがわかります。私たちにとって、焦点はインターフェース関数の作成です。


2.3. ASP.NET を使用して Web サービスを呼び出す

まず、VS2005 を開き、[ファイル]、[新しい Web サイト] の順に開き、[ASP.NET Web サイト] を選択します。

保存場所と言語を選択し、「OK」をクリックしてデフォルトのページに入ります。次に、最初に Web 参照を追加し、WebService を現在のプロジェクトに導入します。方法は、リソース マネージャーを右クリックし、[Web 参照の追加] を選択して、ダイアログ ボックスを表示します:

URL、WebService実行後にブラウザに表示されるアドレス(WebServiceリリース後のアクセスアドレス)を入力し、「Go」ボタンをクリックすると、上図のように参照先のWebServiceが表示されます。呼び出すことができるメソッドを選択し、[参照の追加] をクリックして現在のプロジェクトに Web サービスを参照します。以下に示すように、インポートされた WebService ファイルがソリューションに表示されます

ここでは、Web サービスを呼び出す 4 つの方法を練習し、簡単な呼び出しの例を作成します。まず、Web サイトのフロント デスクにいくつかのコントロールを追加します。

コードをコピー

コードは次のとおりです:

  
  
  

  
    无标题页  
  
  
   
  
   
  
          
               
               
          
               
   
  
   
  
  
 




    无标题页


   

   

       
            
            
       
            
   




次に、呼び出しコードをバックグラウンドで作成します。呼び出す前に、他のオブジェクトを使用する場合と同様に、最初にインスタンス化する必要があります。これにより、WebService にアクセスできるようになります。内部にはメソッドが提供されています。この例では、WebService 呼び出しをトリガーするボタン コントロールが動的に作成されます。バックグラウンド コードは次のとおりです。
以下の図に示すように、最初の 2 つのテキスト ボックスに 2 つのオペランドを入力します。中央のドロップダウン リストから演算子を選択し、「=」記号をクリックすると、計算結果が 3 番目のテキスト ボックスに出力されます。

計算全体はローカルで実行されません。計算は Web サーバー上で行われ、結果は XML を通じて呼び出し元に返されます。したがって、プログラムを実行するときは、WebService プログラムも開始する必要があります。そうしないと、例外が発生します。以下に示すように、リモート サーバーに接続できないことが報告されました:

背景コードは次のとおりです:

コードをコピーします コードは次のとおりです:

using System;
using System.Configuration
using System.Data; ; >System.Linq を使用;
System.Web.UI を使用;
System.Web を使用.UI.WebControls.WebParts;
using System.Xml.Linq; {
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs) e)
{
string selectFlag = selectOper.Value;
localhost.Service web = new localhost.Service();
if (selectFlag.Equals(" "))
{
Result.Text =(web.addition(double.Parse(Num1.Text) ),double.Parse(Num2.Text))).ToString(); subtract(double.Parse(Num1.Text), double.Parse( Num2.Text))).ToString(); 🎜> Result.Text = (web.multiplication(double.Parse(Num1.Text), double.Parse(Num2.Text))).ToString(); /")) > }
}




コードをコピー

コードは次のとおりです:

System を使用;
System.Configuration を使用;
System.Data を使用;
System.Linq を使用;
System.Web を使用;
System.Web.Security を使用;
System.Web.UI を使用する;
System.Web.UI.HtmlControls を使用する;
System.Web.UI.WebControls を使用する;
System.Web.UI.WebControls.WebParts を使用する;
使用するSystem.Xml.Linq;
public 部分クラス _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
string selectFlag = selectOper.Value;
localhost.Service web = new localhost.Service();
if (selectFlag.Equals(" ") )
{
Result.Text =(web.addition(double.Parse(Num1.Text),double.Parse(Num2.Text))).ToString();
}
else if (selectFlag.Equals("-"))
{
Result.Text = (web.subtract(double.Parse(Num1.Text), double.Parse(Num2.Text))).ToString();
}
else if (selectFlag.Equals("*"))
{
Result.Text = (web.multiplication(double.Parse(Num1.Text), double.Parse(Num2. Text))).ToString();
}
else if (selectFlag.Equals("/"))
{
Result.Text = (web.division(double.Parse(Num1. Text)、double.Parse(Num2.Text))).ToString();
}
}
}


ここまでの、単一の WebService の公開と調整が完了しました。実際のアプリケーションでは、必要に応じて、いくつかの機能が強化された単一の WebService を、複数の場合に限らず、全体のフローとして書き込むことができます。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
php怎么把负数转为正整数php怎么把负数转为正整数Apr 19, 2022 pm 08:59 PM

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

php怎么实现几秒后执行一个函数php怎么实现几秒后执行一个函数Apr 24, 2022 pm 01:12 PM

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php字符串有没有下标php字符串有没有下标Apr 24, 2022 am 11:49 AM

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

php怎么除以100保留两位小数php怎么除以100保留两位小数Apr 22, 2022 pm 06:23 PM

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

php怎么根据年月日判断是一年的第几天php怎么根据年月日判断是一年的第几天Apr 22, 2022 pm 05:02 PM

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

php怎么读取字符串后几个字符php怎么读取字符串后几个字符Apr 22, 2022 pm 08:31 PM

在php中,可以使用substr()函数来读取字符串后几个字符,只需要将该函数的第二个参数设置为负值,第三个参数省略即可;语法为“substr(字符串,-n)”,表示读取从字符串结尾处向前数第n个字符开始,直到字符串结尾的全部字符。

php怎么替换nbsp空格符php怎么替换nbsp空格符Apr 24, 2022 pm 02:55 PM

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\&nbsp\;||\xc2\xa0)/","其他字符",$str)”语句。

php怎么查找字符串是第几位php怎么查找字符串是第几位Apr 22, 2022 pm 06:48 PM

查找方法:1、用strpos(),语法“strpos("字符串值","查找子串")+1”;2、用stripos(),语法“strpos("字符串值","查找子串")+1”。因为字符串是从0开始计数的,因此两个函数获取的位置需要进行加1处理。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません