首先,新建的时候要选择soap,然后deocument和rpc都可以。
类和方法的页面:
<?php //发货接口 class test{ function send_do_delivery($orderid,$money,$freight,$shipname,$shiptel,$shipmobile,$shipzip,$shiparea,$shipaddr,$memo,$send,$gift_send){ $orderData=array( 'order_id' =>$orderid, 'delivery' =>'1', 'logi_id' =>'1', 'other_name' =>'', 'logi_no' =>'', 'money' =>$money, 'is_protect' =>false, 'cost_freight' =>$freight, 'ship_name' =>$shipname, 'ship_tel' => $shiptel, 'ship_mobile' =>$shipmobile, 'ship_zip' =>$shipzip, 'ship_area' =>$shiparea, 'ship_addr' =>$shipaddr, 'memo' =>$memo, 'send' => $send, 'gift_send' => $gift_send ); /**拼凑提交的数据*/ $params = array( 'parms' => json_encode($orderData) ); $url = "http://XXXXXX/tools-do_delivery.html"; $res=$this->sendByPost($url,$params); //var_dump(); return $res; } #发送ERP请求 function sendByPost($url,$paramArray){ $postdata = http_build_query($paramArray); $length = strlen($postdata); $cl = curl_init($url); curl_setopt($cl, CURLOPT_POST, true); curl_setopt($cl,CURLOPT_HTTP_VERSION,CURL_HTTP_VERSION_1_1); curl_setopt($cl,CURLOPT_HTTPHEADER,array("Content-Type: application/x-www-form-urlencoded","Content-length: ".$length)); curl_setopt($cl,CURLOPT_POSTFIELDS,$postdata); curl_setopt($cl,CURLOPT_RETURNTRANSFER,true); $content = curl_exec($cl); curl_close($cl); return ($content); } } ?>
server.php
<?php include("delivery.php"); $Server=new SoapServer('delivery.wsdl'); //SoapServer $Server->setClass("test"); $Server->handle(); ?>
delivery.wsdl(rpc单参数)
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://127.0.0.1/urlcode/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="delivery" targetNamespace="http://127.0.0.1/urlcode/"> <wsdl:message name="send_do_deliveryRequest"> <wsdl:part name="orderid" type="xsd:string"></wsdl:part> </wsdl:message> <wsdl:message name="send_do_deliveryResponse"> <wsdl:part name="send_do_deliveryResponse" type="xsd:string"/> </wsdl:message> <wsdl:portType name="delivery"> <wsdl:operation name="send_do_delivery"> <wsdl:input message="tns:send_do_deliveryRequest"/> <wsdl:output message="tns:send_do_deliveryResponse"/> </wsdl:operation> </wsdl:portType> <wsdl:binding name="deliverySOAP" type="tns:delivery"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="send_do_delivery"> <soap:operation soapAction="http://127.0.0.1/urlcode/send_do_delivery"/> <wsdl:input> <soap:body namespace="http://127.0.0.1/urlcode/" use="literal"/> </wsdl:input> <wsdl:output> <soap:body namespace="http://127.0.0.1/urlcode/" use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="delivery"> <wsdl:port binding="tns:deliverySOAP" name="deliverySOAP"> <soap:address location="http://127.0.0.1/urlcode/server.php"/> </wsdl:port> </wsdl:service> </wsdl:definitions>
deliverySOAP里面要改成server.php的路径
rpc多参数
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://127.0.0.1/urlcode/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="delivery" targetNamespace="http://127.0.0.1/urlcode/"> <wsdl:message name="send_do_deliveryRequest"> <wsdl:part name="orderid" type="xsd:string"></wsdl:part> <wsdl:part name="memo" type="xsd:string"></wsdl:part> </wsdl:message> <wsdl:message name="send_do_deliveryResponse"> <wsdl:part name="send_do_deliveryResponse" type="xsd:string"/> <wsdl:part name="msg" type="xsd:string"></wsdl:part> </wsdl:message> <wsdl:portType name="delivery"> <wsdl:operation name="send_do_delivery"> <wsdl:input message="tns:send_do_deliveryRequest"/> <wsdl:output message="tns:send_do_deliveryResponse"/> </wsdl:operation> </wsdl:portType> <wsdl:binding name="deliverySOAP" type="tns:delivery"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="send_do_delivery"> <soap:operation soapAction="http://127.0.0.1/urlcode/send_do_delivery"/> <wsdl:input> <soap:body namespace="http://127.0.0.1/urlcode/" use="literal"/> </wsdl:input> <wsdl:output> <soap:body namespace="http://127.0.0.1/urlcode/" use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="delivery"> <wsdl:port binding="tns:deliverySOAP" name="deliverySOAP"> <soap:address location="http://127.0.0.1/urlcode/server.php"/> </wsdl:port> </wsdl:service> </wsdl:definitions>
document多参数
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://127.0.0.1/urlcode" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="delivery" targetNamespace="http://127.0.0.1/urlcode"> <wsdl:types> <xsd:schema targetNamespace="http://127.0.0.1/urlcode"> <xsd:element name="send_do_delivery"> <xsd:complexType> <xsd:sequence> <xsd:element name="in" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="send_do_deliveryResponse"> <xsd:complexType> <xsd:sequence> <xsd:element name="out" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> </wsdl:types> <wsdl:message name="send_do_deliveryRequest"> <wsdl:part element="tns:send_do_delivery" name="parameters"/> <wsdl:part name="orderid" type="xsd:string"></wsdl:part> <wsdl:part name="memo" type="xsd:string"></wsdl:part> </wsdl:message> <wsdl:message name="send_do_deliveryResponse"> <wsdl:part element="tns:send_do_deliveryResponse" name="parameters"/> <wsdl:part name="status" type="xsd:string"></wsdl:part> <wsdl:part name="msg" type="xsd:string"></wsdl:part> </wsdl:message> <wsdl:portType name="delivery"> <wsdl:operation name="send_do_delivery"> <wsdl:input message="tns:send_do_deliveryRequest"/> <wsdl:output message="tns:send_do_deliveryResponse"/> </wsdl:operation> </wsdl:portType> <wsdl:binding name="deliverySOAP" type="tns:delivery"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="send_do_delivery"> <soap:operation soapAction="http://127.0.0.1/urlcode/NewOperation"/> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="delivery"> <wsdl:port binding="tns:deliverySOAP" name="deliverySOAP"> <soap:address location="http://127.0.0.1/urlcode/server.php"/> </wsdl:port> </wsdl:service> </wsdl:definitions>