Home  >  Article  >  Backend Development  >  PHP uses SOAP to call .net WebService problem_PHP tutorial

PHP uses SOAP to call .net WebService problem_PHP tutorial

WBOY
WBOYOriginal
2016-07-13 10:34:10707browse

The project needs to exchange data with a .net system, and the partner provides a WebService interface. This is a bit different from the general PHP POST or GET method of passing values ​​and then checking the database to get the data. You need to use the SOAP module. The processing method is also very simple, but there are some things that need to be paid attention to.

First make sure that .SOAP is enabled in your PHP.ini, that is, remove the semicolon in front of extension=php_soap.dll.

The code is very simple:

<?php

$client = new SoapClient('http://www.bkjia.com/SearchService.asmx?WSDL');

$client->soap_defencoding = 'utf-8';  
$client->decode_utf8 = false;   
$client->xml_encoding = 'utf-8'; 

$param = array('param1'=>'01', 'param2'=>'02');

//$param["param1"]="01";
//$param["param2"]="02";

//$result = $client->__soapCall("GetArticle", array( $param ));
$result = $client->__Call("GetArticle", array( $param ));

if (is_soap_fault($result))
{
    trigger_error("SOAP Fault: (faultcode: {$result->faultcode}, faultstring: {$result->faultstring})", E_USER_ERROR);
}
else
{
    $data = $result->GetArticleResult;	//这里返回的是类,必须使用->得到元素的值
    print_r($data);
}
?>

One thing to note is that the parameter is an array wrapped in an array, which is array( array() )

Attached are some parameters of the SOAP interface:

The following is a sample SOAP 1.2 request and response. Placeholders shown need to be replaced with actual values.

POST /SearchService.asmx HTTP/1.1
Host: 202.105.183.61
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://tempuri.org/GetTrafficViolationInfo"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <GetArticle xmlns="http://tempuri.org/">
      <param1>string</param1>
      <param2>string</param2>
    </GetArticle>
  </soap:Body>
</soap:Envelope>
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <GetArticleResponse xmlns="http://tempuri.org/">
      <GetArticleResult>string</GetArticleResult>
    </GetArticleResponse>
  </soap:Body>
</soap:Envelope>

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/752322.htmlTechArticleThe project needs to exchange data with a .net system, and the partner provides a WebService interface. This is a bit different from the general PHP POST or GET method of passing values ​​and then checking the library to get the data...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn