Que faire si le service Web PHP est tronqué ?

藏色散人
Libérer: 2023-03-05 11:14:01
original
1868 Les gens l'ont consulté

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;
'; ?>
Copier après la connexion

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;
Copier après la connexion

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;;
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal