'',十六进制值0x1F,不是有效字符。第1行,第1项

时间:2018-06-11 10:57:50

标签: c#-4.0 httpwebrequest xmltextreader

我通过httpwebrequest获取xml数据。以下代码工作正常。但是有些东西发生了变化,突然开始给我一个异常的Read()方法错误: '',十六进制值0x1F,不是有效字符。第1行,第1项。 在网络浏览器中,sURL为我提供了有效的xml。我不知道发生了什么变化。

require 'openssl'
require 'base64'


if File.exist?("./pub_key.txt")

  #Keys are strings, I can encrypt but not decrypt a message
  pri = File.read("./pri_key.txt")
  pub = File.read("./pub_key.txt")

  puts pub

  string = 'Hello World!';

  rsa_public_key = OpenSSL::PKey::RSA.new(pub)
  rsa_private_key = OpenSSL::PKey::RSA.new(pri)
  encrypted_string = Base64.encode64(rsa_public_key.public_encrypt(string))

  puts encrypted_string 

  # This throws an error
  # Because 'pri' is a string, don't know how to cast it to the right type
  my_string = rsa_private_key .private_decrypt(Base64.decode64(encrypted_string))

  puts "The decoded message"
  puts my_string


end

1 个答案:

答案 0 :(得分:-1)

目前MSDN Topic讨论了同样的问题,结果是,

  

服务器有时会压缩其响应以节省带宽,这种情况下,您需要在尝试读取响应之前先对其进行解压缩。幸运的是,.NET框架可以自动执行此操作,但是,我们必须打开该设置。

这个stackoverflow主题解决了这个问题

0x1F XML Error Solution

您应检查网址中有关可能的GZip压缩用法的响应。

今天愉快。