2010-11-23 4 views
2

J'utilise PHP pour consommer un service Web ASP.NET. Cette méthode particulière nécessite une variable de GUID en tant que paramètre. Il est défini comme Nullable. J'essaye d'envoyer une chaîne nulle ou vide "" comme paramètre. Après quoi, j'obtiens une exception SoapFault: [a: DeserializationFailed] erreur. Dit que la valeur '' ne peut pas être analysée comme le type 'Guid'. 'erreur lors du passage de chaîne vide/vide au type de données GUID à partir d'un client de savon php

Toute idée quant à la façon de passer une chaîne vide ou vide en tant que paramètre ici.

Merci d'avance.

Aman

+0

Fournissez un exemple de code indiquant comment vous avez essayé d'envoyer une valeur nulle, s'il vous plaît –

+0

$ demoAccountRegistrationRequest-> LoggedInAccountId = ""; – Aman

Répondre

1

.NET ne fait pas NULLs. Ce que vous avez probablement fait, c'est trouver quelqu'un qui a écrit un service web .net et n'a fait aucune vérification d'erreur pour détecter les données d'autres langages/systèmes que les autres applications .net. Ces problèmes sont très difficiles à résoudre. Mais vous pouvez essayer de tromper le service. Essayez d'envoyer d'autres données négatives. Faux, 0, et éventuellement, aussi étrange que cela puisse paraître, "". (Je sais, mais cela a fonctionné pour moi dans le passé, allez fig.)

2

Essayez la valeur Guid.Empty de .NET de "{00000000-0000-0000-0000-000000000000}". Cela peut ou peut ne pas fonctionner selon l'implémentation de filtrage/recherche par le service Web, etc.

0

En termes de C#, vous devrez peut-être valider en php si vous avez un null, un string.empty ou un guid.empty.

J'utilise le code suivant pour vérifier guid.empty en php

function isGuidEmpty($my_guid_as_a_string) { 
    // Assuming the guid is valid 
    $retVal = false; 
    $val = $array_sum(explode("-", $my_guid_as_a_string)); 

    if ($val == 0) { 
     // Guid is empty 
     $retVal = true; 
} 

return $retVal; 
} 

Je sais qu'il ya de meilleures façons en utilisant des expressions régulières, mais cela fait habituellement le tour.

Questions connexes