У меня есть следующий код для создания веб-службы
[WebMethod]
public string EncryptText1(string plaintext)
{
ASCIIEncoding textConverter = new ASCIIEncoding();
byte[] key = textConverter.GetBytes("2a1c907916add59edffb3a4b");
byte[] IV = textConverter.GetBytes("00000000");
byte[] clearData = Encoding.ASCII.GetBytes(plaintext);
byte[] cipherData = EncryptText(clearData, key, IV);
return Convert.ToBase64String(cipherData);
}
[WebMethod]
public byte[] EncryptText(byte[] clearData, byte[] Key, byte[] IV)
{
MemoryStream ms = new MemoryStream();
TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
tdes.Mode = CipherMode.ECB;
tdes.Padding = PaddingMode.PKCS7;
ICryptoTransform alg = tdes.CreateEncryptor(Key, IV);
CryptoStream cs = new CryptoStream(ms, alg, CryptoStreamMode.Write);
cs.Write(clearData, 0, clearData.Length);
cs.FlushFinalBlock();
cs.Close();
byte[] encryptedData = ms.ToArray();
return encryptedData;
}
У меня есть следующий код для доступа к веб-сервису в php
<?php
$enc_wsdl = "http://172.18.0.75/EncryptionWS/EncryptionWS.asmx?wsdl";
$enc_client = new SoapClient($enc_wsdl);
$finalstring = $enc_client->EncryptText1("SomeUserName");
print_r($finalstring);
?>
но я получаю следующую ошибку:
Неустранимая ошибка: исключение Uncaught SoapFault: [soap: Server] Сервер был
невозможно обработать запрос. —> Строковая ссылка не установлена в
экземпляр строки. Имя параметра: s в
C: \ xampp \ htdocs \ dotnetwebservice \ index.php: 4 Трассировка стека: # 0
C: \ XAMPP \ HTDOCS \ dotnetwebservice \ index.php (4):
SoapClient -> __ call (‘EncryptText1’, Array) # 1
C: \ XAMPP \ HTDOCS \ dotnetwebservice \ index.php (4):
SoapClient-> EncryptText1 (‘SomeUserName’) # 2 {main} добавляется
C: \ xampp \ htdocs \ dotnetwebservice \ index.php в строке 4
Тем не менее, я получаю ту же ошибку, если я использую мыло, однако я решил проблему с помощью вызова ajax.
Ниже приведен код:
$.ajax({
type: "POST",
url: "http://172.18.3.0/EncryptDecrypt/Encryptdecrypt.asmx/Encrypt",
//url: "http://172.18.0.75/EncryptionWS/EncryptionWS.asmx/EncryptText1",
data: JSON.stringify({'nameorpassword': 'ww'}),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg)
{
alert(msg.d);
}
});
Других решений пока нет …