2014-01-22 35 views
0

我正在研究基於web service的系統,該系統具有使用DES算法加密文本的客戶端。無法將加密文本傳遞給.net Web服務

當我的客戶端發送加密的文本對Web服務的Web方法,我搭上了

的ProtocolException異常說遠程服務器返回了意外的響應:(400)錯誤的請求。

文本加密前: 「你好」 加密後
文字: 「I%L *」

我應該怎麼做才能解決這個問題?

+0

的加密結果是*的二進制數據*。使用十六進制或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謝謝你的回覆,你能幫我一個示例代碼片段嗎?答:我應該如何將我的字符串轉換爲流。 B:我應該如何改變我的網絡服務以接受流? –

相關問題