[英]Unable to access .net webservice in php using soap
I have the following code to create a web service 我有以下代码来创建Web服务
[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;
}
I have the following code to access the web service in php 我有以下代码来访问php中的Web服务
<?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);
?>
but I am getting the following error: 但我收到以下错误:
Fatal error: Uncaught SoapFault exception: [soap:Server] Server was unable to process request.
致命错误:未捕获的SoapFault异常:[soap:Server]服务器无法处理请求。 ---> String reference not set to an instance of a String.
--->字符串引用未设置为字符串的实例。 Parameter name: s in C:\\xampp\\htdocs\\dotnetwebservice\\index.php:4 Stack trace: #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} thrown in C:\\xampp\\htdocs\\dotnetwebservice\\index.php on line 4
参数名称: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}放在第4行的C:\\ xampp \\ htdocs \\ dotnetwebservice \\ index.php中
Still I am getting the same error if I use soap, however I solved the problem using ajax call. 如果使用肥皂仍然会出现相同的错误,但是我使用ajax调用解决了该问题。
Below is the code: 下面是代码:
$.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); } });
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.