我以这种方式调用SOAP Web服务:
WSStatus.WSClient ws = new WSStatus.WSClient();
I = ws.stats(ConfigurationManager.AppSettings["USR"], ConfigurationManager.AppSettings["PWD"], "aCode");
每次调用这个web服务时,它都会给我一个不同的输出,所以我需要检查输出是否与之前的调用相同。输出不是字符串所以我不能以简单的方式检查它,但我需要一些聪明的东西。有任何想法吗?
我会有类似MD5哈希的东西,所以我可以将它存储在数据库中供将来检查。
答案 0 :(得分:0)
假设您正在返回一个普通对象,您可以尝试序列化字节数组上的响应,并使用MD5或SHA256生成对象哈希(根据Wikipedia检测到较少的冲突)。此代码可能对您有所帮助。
public static string GetObjectHash<T>(this T foo)
{
byte[] serializedData = null;
var hasher = SHA256.Create();
var serializer = new DataContractSerializer(typeof(T));
using (var stream = new MemoryStream())
{
serializer.WriteObject(stream, foo);
serializedData = stream.ToArray();
}
serializedData = hasher.ComputeHash(serializedData);
return String.Concat(serializedData.Select(d => d.ToString("x2")));
}
我希望这有帮助!