2014-01-22 2 views
0

Я работаю над системой на основе web service, у которой есть клиент, который шифрует текст с использованием алгоритма DES.Не удается передать зашифрованный текст в .net веб-службу

Когда мой клиент посылает зашифрованный текст на веб-метода на веб-сервиса, я ловлю ProtocolException исключение в

говоря Удаленный сервер возвратил неожиданный ответ: (400) Bad Request.

Текст перед шифрованием: "Здравствуйте"
Текст после шифрования: "I% л *"

Что я должен сделать, чтобы решить эту проблему?

+0

Результат шифрования * двоичные данные *. Используйте hex или base64 для представления его в виде текста. –

+0

Спасибо @JonSkeet :) base64 сделал это. –

ответ

1

Исключение произошло из-за специальных символов в строке, которая не поддерживается. Вы можете внести изменения в службу, чтобы принять поток вместо строки.

сервера код стороны:

Boolean GetData(Stream fStream) 
{ 
    try 
    {   
    // Read the stream into a byte array 

    Byte[] data = new Byte[32767]; 
    using (MemoryStream ms = new MemoryStream()) 
    { 
      while(true) 
      { 
        Int32 read = stream.Read(data, 0, data.Length); 
        if(read <= 0) 
         return ms.ToArray(); 
        ms.Write(data, 0, read); 
      } 
    } 

    // Copy to a string for header parsing 
    String content = Encoding.UTF8.GetString(data); 

    // do something 
    } 
    catch (Exception ex) 
    { 
    throw(ex); 
    } 
} 
+0

@Smmer спасибо за ваш ответ, не могли бы вы помочь мне с образцом кода? A: Как мне преобразовать мою строку в поток. B: Как мне изменить веб-сервис, чтобы принять поток? –

 Смежные вопросы

  • Нет связанных вопросов^_^