2015-07-06 4 views
0

Я уже почти два дня сталкивался с этой проблемой, и, похоже, я не нашел решения. Я размещаю на моем компьютере службу WCF, содержащую метод SendCredentials, который принимает два строковых параметра.POST http: // localhost: 51348/TestService.svc/SendCredentials 400 (неудачный запрос)

Теперь я должен отправить открытый ключ к моему сервису, через который он будет выполнять шифрование (криптографию Асимметричного) и отправить некоторую информацию обратно клиенту.

Я не могу передать, что открытый ключ метода обслуживания от клиента, как в XML format.Here мой код клиента сторона:

$(document).ready(function() { 
     $("#btnSend").click(function() { 
      debugger; 
      jQuery.support.cors = true; 

      var doOaepPadding = true; 
      var rsa = new System.Security.Cryptography.RSACryptoServiceProvider(); 
      _privateKey = rsa.ToXmlString(true); 
      _publicKey = rsa.ToXmlString(false); 
      var data = $("#txtName").val(); 
      var name = "testvalue"; 

      var _privateKey = rsa.ToXmlString(true); 
      **var _publicKey = rsa.ToXmlString(false);** 

      //<![CDATA[ and ]]>; 
      $.ajax({ 

       type: "POST", 

       url: 'http://localhost:51348/TestService.svc/SendCredentials', 
       crossDomain: true, 

        data:JSON.stringify({ mac: "bac", pubKey: _publicKey }), 

       contentType: "application/json", 
       dataType: "json", 

       success: function (result) { 
        var ans = JSON.stringify(result); 

        alert(ans); 

        // result = new XMLSerializer().serializeToString(result.documentElement); 

       }, 
       error: function (xhr, err) { 
        alert("readyState: " + xhr.readyState + "\nstatus: " + xhr.status); 
        alert("responseText: " + xhr.responseText); 
       } 
      }); 
      return false; 

     }); 

    }); 

</script> 

_ ОткрытыйКлюч является переменная, которую я хочу передать, но бросает выше указанной ошибки. Любые предложения. Как передать эту переменную XML.

ответ

0

Я хотел бы предложить вам конвертировать _publicKey в base64 строку

конвертировать _publicKey в струнной затем массив байтов и использовать

Convert.ToBase64String(byte[] inArray) 

и на стороне службы делают обратное

System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(endodedString), true)); 
+0

Мои клиент - это javascript..может ли он работать? –

+0

см. Это [ссылка] http://stackoverflow.com/questions/246801/how-can-you-encode-a-string-to-base64-in-javascript – Thakur

+0

@ Ананд Тхакур: Нет, это не сработало .. .Есть ли какой-либо другой механизм обмена открытым ключом, который я могу реализовать в javascript ..., где открытый ключ не генерируется в XML? –