下面是完整的攻略:
C#使用PHP服务端的Web Service通信实例
准备工作
- PHP服务端支持SOAP,因为Web Service通信至少需要支持SOAP(Simple Object Access Protocol,简单对象访问协议)。
- C#客户端需要支持WCf服务,因为SOAP基于XML,而WCF自然地支持了XML特性。
步骤一:创建PHP后端Web Service
我们将使用PHP后端服务来提供Web Service。以一个简单的例子来说明如何在PHP中创建Web Service。
1. 创建服务
在PHP中,可以使用NuSOAP库来创建Web Service。安装NuSOAP后,可以创建如下的PHP代码来定义一个Web Service:
<?php
require_once "nusoap/nusoap.php";
$server = new soap_server();
$server->configureWSDL("YourService", "urn:YourService");
$server->register("YourFunction",
array("arg1" => "xsd:string", "arg2" => "xsd:string"),
array("return" => "xsd:string"),
"urn:YourService",
"urn:YourService#YourFunction");
function YourFunction($arg1, $arg2)
{
return "You sent: " . $arg1 . " and " . $arg2;
}
$server->service(file_get_contents("php://input"));
?>
此代码创建了一个YourService
服务,该服务提供了YourFunction
方法。YourFunction
函数接收两个参数,返回一个字符串。$server->service(file_get_contents('php://input'))
语句向Web Service引擎发送请求。经过这些操作,你的服务就已经启动了!
2. 测试服务是否正常工作
可以使用SOAPUI来测试Web Service,或者手动编写一个基于SOAP协议的请求。这是手动请求示例:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="urn:YourService">
<SOAP-ENV:Body>
<ns1:YourFunction>
<arg1>test1</arg1>
<arg2>test2</arg2>
</ns1:YourFunction>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
最终,您将得到一个类似于下面的响应:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="urn:YourService">
<SOAP-ENV:Body>
<ns1:YourFunctionResponse>
<return>You sent: test1 and test2</return>
</ns1:YourFunctionResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
步骤二:C#客户端使用Web Service
现在我们已经为Web Service创建了一个简单的实现,下一步是编写C#客户端以使用该服务。
1. 使用 WCF 创建客户端
使用 Visual Studio 中的 Add Service Reference 选项来为 Web 服务创建客户端。打开项目,右键单击项目名称,然后选择“添加” > “服务引用”。键入服务地址并单击“查找”,此时 Visual Studio 会自动更新服务列表。然后,单击“确定”来向项目添加引用。
2. 创建客户端代码并测试
在 Visual Studio 中打开新建的项目,在类中添加以下代码:
using System;
using System.ServiceModel;
namespace WCFTest
{
class Program
{
static void Main(string[] args)
{
YourService.YourServiceClient client = new YourService.YourServiceClient();
Console.WriteLine(client.YourFunction("test1", "test2"));
client.Close();
}
}
}
这段代码创建了一个YourService
客户端,通过调用YourFunction
方法向服务发送请求。执行该应用程序后,您将得到如下响应:
You sent: test1 and test2
另外,需要注意的是,您需要在 .NET Framework 派生的平台上运行此代码,如 Windows 或 Windows Server。此外,为了防止 Web Service 的 OOXML 影响,一些 .NET 程序需要使用最低权限将 Web 服务请求封装在给 Web 服务中提供的代码包中。这需要对代码进行修改。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#使用PHP服务端的Web Service通信实例 - Python技术站