对于php实现soap代理的一个常见问题:Class 'SoapClient' not found in PHP的处理方法

首先确定,这是因为你的电脑的php.ini配置文件中的extension=php_soap.dll这个项没有或者没打开(没打开的意思是他的前面有个“;”)。这点请不用质疑。然后,你写个php文件,里面什么都不用写,就写一句“phpinfo();”即可。

如:


然后去浏览器打开这个页面。看里面的一个Loaded Configuration File的值是什么。如:


然后在电脑中找到对应的该文件,打开,在里面找到一大堆extension=...的,看里面有没有:extension=php_soap.dll,有就将其前面的“;”去掉,没有就加上这句即可。如果必要的话,还可以将以下这个也配置好:extension=php_openssl.dll。特别注意:这里不是apache整套安装包里面的:,不要在这几个文件里面改,虽然里面都有那个项。但改了根本没用。

  然后保存。重启apache。再次去打开你要打开的soap代理页面。就可以了。测试soap是否可以的测试文件这里附上代码:

<?php
//echo phpinfo();

 $client = new SoapClient("http://www.webservicex.net/globalweather.asmx?WSDL");       
 $param=array("CountryName"=>'China');   
 $out=$client->GetCitiesByCountry($param);   
 $data=$out->GetCitiesByCountryResult;  
 print_r($data);  
 
 
 $param=array("CityName"=>'Beijing',"CountryName"=>'China');
 $out1 = $client->GetWeather($param);
 $data1 = $out1->GetWeatherResult;
 print_r($data1);


?>

再附上图片:


在Java中,使用JAX-WS(Java Architecture for XML Binding)可以轻松地创建和消费SOAP服务。SOAP(Simple Object Access Protocol)是一种用于在网络上交换结构化信息的标准协议。以下是如何使用JAX-WS实现一个简单的SOAP查找服务: 1. 首先,你需要定义一个SOAP接口(WSDL文档),这个接口描述了你的服务的行为。例如,你可以创建一个名为`FindService`的接口,包含一个名为`findItem`的方法,接受一个参数(如`String`类型的商品ID)并返回结果。 ```java @WebService(name = "FindService", targetNamespace = "http://yournamespace.com/") public interface FindService { @WebMethod(operationName = "findItem") String findItem(@WebParam(name = "itemId") String itemId); } ``` 2. 创建一个实现该接口的类,通常使用JAXB annotations将其转换为XML消息。例如: ```java import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @XmlAccessorType(XmlAccessType.FIELD) @XmlRootElement(name = "FindResponse") public class FindResponse { @XmlElement(name = "foundItem") private String foundItem; // getters and setters } ``` 3. 实现`FindService`接口,并将`findItem`方法中的逻辑写入: ```java @Service @SOAPBinding(style = SOAPBinding.Style.RPC, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.BARE) public class FindServiceImpl implements FindService { public FindResponse findItem(String itemId) { // 你的业务逻辑在这里,比如从数据库查询或硬编码数据 boolean isFound = itemId.equals("item1"); return new FindResponse(isFound ? "Item found" : "Item not found"); } } ``` 4. 使用JAX-WS工具(如Apache CXF或NetBeans的内置支持)生成客户端和服务端的代理类,这将自动处理SOAP请求和响应。 5. 如果你想发布这个服务,你可以创建一个`@WebService`注解的`@WebServiceEndpoint`类,配置HTTP监听器地址等细节: ```java @WebServiceClient(name = "FindService", wsdlLocation = "file:/path/to/your/wsdl.wsdl") public class FindServiceClient { private static final QName SERVICE_NAME = new QName("http://yournamespace.com/", "FindService"); public FindService getFindService() { return service.getPort(FindService.class); } // ... } ``` 6. 最后,在客户端调用`getFindService().findItem(itemId)`即可发送SOAP请求到服务器。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值