【问题标题】:Unable to access .net webservice in php using soap无法使用soap访问php中的.net webservice
【发布时间】:2015-07-06 22:49:58
【问题描述】:

我有以下代码来创建一个网络服务

[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中访问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);
?>

但我收到以下错误:

致命错误:未捕获的 SoapFault 异常:[soap:Server] 服务器是 无法处理请求。 ---> 字符串引用未设置为 字符串的实例。参数名称:s in 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 行

【问题讨论】:

标签: php asp.net web-services soap webservice-client


【解决方案1】:

如果我使用soap,我仍然会遇到同样的错误,但是我使用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);
                    }
                });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-20
    • 1970-01-01
    • 1970-01-01
    • 2011-10-10
    • 2018-12-26
    • 1970-01-01
    相关资源
    最近更新 更多