Maison >développement back-end >Problème PHP >Que faire si le service Web PHP est tronqué ?

Que faire si le service Web PHP est tronqué ?

藏色散人
藏色散人original
2020-08-28 09:51:011896parcourir

Solution au service Web php tronqué : ouvrez d'abord le fichier "nusoap.php" ; puis modifiez le contenu en "var $soap_defencoding = 'UTF-8';" et "var $decode_utf8 = false;".

Que faire si le service Web PHP est tronqué ?

Recommandé : "Tutoriel vidéo PHP"

php call webservice Chinese brouillé solution

En raison de besoins professionnels, j'ai aidé mon collègue A Tao à tester l'application du service Web .net en PHP. J'ai donc commencé à chercher des informations sur Internet et j'ai découvert que de nombreux tutoriels PHP utilisaient nusoap. Utilisez l'exemple fourni pour le modifier. Vous pouvez trouver l'adresse de téléchargement dans la pièce jointe à la fin de l'article. Le code est le suivant :

<?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;
'; ?>

S'il n'y a pas de chinois dans le contenu renvoyé par mon. webservice, il est très simple d'utiliser l'exemple ci-dessus. Cela a réussi. Mais un nouveau problème est apparu. S'il y a du chinois dans mon webservice, la valeur renvoyée devient tronquée. J'ai vérifié le résultat de la réponse et elle aurait dû apparaître quand. utiliser nusoap pour le traiter. Question.

Comme je n'ai pas installé l'outil de débogage de point d'arrêt PHP (en fait, je ne sais même pas s'il existe un tel outil), je ne peux donc regarder qu'une seule méthode. et une méthode. Après l'avoir regardé pendant une journée, je l'ai finalement terminé. J'ai changé nusoap .php c'est OK

J'ai changé d'endroit :

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

Ce n'est pas grave si vous ne le changez pas. , mais vous devez spécifier l'encodage lors de l'appel.

$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;;

comme ça L'effet est le même. Si les paramètres de la demande sont en chinois, envoyez-les simplement par courrier ou recevez. avec des caractères chinois dans le code, vous devez convertir l'encodage en UTF8. Vous pouvez vous référer à la pièce jointe.

.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn