>백엔드 개발 >PHP 튜토리얼 >Soap communications_php 기술을 구현하는 PHP 방법

Soap communications_php 기술을 구현하는 PHP 방법

WBOY
WBOY원래의
2016-05-16 20:33:221129검색

이 글의 예시에서는 PHP에서 Soap 통신을 구현하는 방법을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 구현 방법은 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.
함수 HttpSoap($server, $port, $url, $namespace, $action, $data) {
$fp = @fsockopen($server, $port);
if (!$fp) {
거짓을 반환합니다.
} 그 밖의 {
$soapData = ConstructData($namespace, $action, $data);
$length = strlen($soapData);
$out = "POST $url HTTP/1.1rn";
$out .= "호스트: $serverrn";
$out .= "콘텐츠 유형: text/xml; charset=utf-8rn";
$out .= "콘텐츠 길이: $lengthrn";
$out .= "SOAPAction: "$namespace$action"rnrn";
$out .= $soapData;
$out .= "rnrn";
fputs($fp, $out);
stream_set_timeout($fp, 2);
$헤더 = "";
while($line = Trim(fgets($fp))) {
$header .= $line."n";
}
$dataPos = strpos($header, "콘텐츠 길이: ") 16;
$dataEnd = strpos($header, "n", $dataPos);
$dataLength = substr($header, $dataPos, $dataEnd - $dataPos);
$data = "";
if($dataLength > 0) {
$data = fread($fp, $dataLength);
}
fclose($fp);
if(strlen($data) != $dataLength || $dataLength <= 0) {
거짓을 반환합니다.
}
$data 반환;
}
}
함수 ConstructData($namespace, $action, $data) {
$soapData = "

rn";
$soapData .= "rn";
$soapData .= " rn";
$soapData .= " <$action xmlns="$namespace">rn";
foreach($data as $name => $value) {
$name = iconv("GBK","UTF-8",$name);
$value= iconv("GBK","UTF-8",$value);
$soapData .= " <$name>$valuern";
}
$soapData .= " rn";
$soapData .= "
rn";
$soapData .= "";
$soapData 반환;
}
$data=배열(
'user'=>'Test', //바이너리 데이터를 입력해야 하는 경우 BASE64 인코딩을 사용하세요
'통과'=>'테스트'
);
echo HttpSoap('sample.anyhost.com', 80, '/sampleSoap.asmx', 'http://tempuri.org/', 'logIn', $data);
?>

이 기사가 모든 사람의 PHP 프로그래밍 설계에 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.