>  기사  >  백엔드 개발  >  PHP 웹 서비스가 왜곡되면 어떻게 해야 합니까?

PHP 웹 서비스가 왜곡되면 어떻게 해야 합니까?

藏色散人
藏色散人원래의
2020-08-28 09:51:011849검색

잘못된 PHP 웹 서비스에 대한 해결 방법: 먼저 "nusoap.php" 파일을 연 다음 내용을 "var $soap_defencoding = 'UTF-8';" 및 "var $decode_utf8 = false;"로 수정합니다.

PHP 웹 서비스가 왜곡되면 어떻게 해야 합니까?

추천: "PHP 비디오 튜토리얼"

웹 서비스 호출을 위한 PHP 솔루션 중국어 왜곡 문자

작업 요구로 인해 동료 A Tao가 PHP에서 .net 웹 서비스 애플리케이션을 테스트하도록 도왔습니다. 나는 인터넷에서 정보를 찾기 시작했고 많은 PHP 튜토리얼이 nusoap을 사용한다는 것을 발견했습니다. 그래서 하나를 다운로드하고 함께 제공되는 예제로 수정했습니다. 코드는 기사 마지막에 있습니다.

<?php 
require_once(&#39;../nusoap/lib/nusoap.php&#39;); 
$client = new soapclient(&#39;http://localhost/TestService/Service1.asmx?WSDL&#39;, true); 
$err = $client->getError(); 
if ($err) { 
echo &#39;<h2>Constructor error</h2><pre class="brush:php;toolbar:false">&#39; . $err . &#39;
'; } // Doc/lit parameters get wrapped $param = array('str' => 'China'); $result = $client->call('HelloWorld', array('parameters' => $param), '', '', false, true,'document','encoded'); // Check for a fault if ($client->fault) { echo '

Fault

&#39;; 
print_r($result); 
echo &#39;
'; } else { // Check for errors $err = $client->getError(); if ($err) { // Display the error echo '

Error

&#39; . $err . &#39;
'; } else { // Display the result echo '

Result

&#39;; 
  print_r($result); 
  echo &#39;
'; } } echo '

Request

&#39; . htmlspecialchars($client->request, ENT_QUOTES) . &#39;
'; echo '

Response

&#39; . htmlspecialchars($client->response, ENT_QUOTES) . &#39;
';//开源代码最模板zuimoban.com echo '

Debug

&#39; . htmlspecialchars($client->debug_str, ENT_QUOTES) . &#39;
'; ?>

내 웹 서비스에서 반환된 내용에 중국어가 없으면 위의 예는 성공하지만, 내 웹 서비스에서 반환된 내용에 중국어가 있으면 반환 값은 다음과 같습니다. 확인해 보세요. 응답 결과가 정확합니다. nusoap으로 처리할 때 문제가 있을 것입니다.

PHP 중단점 디버깅 도구를 설치하지 않았기 때문에(사실 그런 것이 있는지도 모르겠습니다.) a 도구) 그래서 방법은 하나밖에 없군요. 방법을 한번 살펴보니 nusoap.php에서 두 곳을 바꿔보니 괜찮더군요.

변경된 장소:

86行的:var $soap_defencoding = &#39;UTF-8&#39;;
4998行的:var $decode_utf8 = false;

변경하지 않고 그대로 둘 수도 있지만 호출 시 인코딩을 지정해야 합니다.

$client = new soapclient(&#39;http://localhost/TestService/Service1.asmx?WSDL&#39;, true); 
$client->soap_defencoding = &#39;UTF-8&#39;; 
$client->soap_defencoding = &#39;UTF-8&#39;;

효과는 동일합니다. 요청의 매개변수가 중국어인 경우에는 우편으로 보내거나, 작성해야 하는 경우 가져옵니다. 코드에 중국어 문자가 포함된 매개변수를 사용하려면 인코딩을 UTF8로 변환해야 합니다. 어쩌면 참조 첨부 파일입니다.

위 내용은 PHP 웹 서비스가 왜곡되면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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