【发布时间】:2015-08-31 18:23:32
【问题描述】:
我正在使用 WebClient 向远程 URL 发送 HTTP POST 请求,如下所示:
byte[] responsebytes = client.UploadValues(
"https://www.jaja.com/yadayadayada", "POST", reqparm);
responsebody = Encoding.UTF8.GetString(responsebytes);
URL 以 HTTP POST 参数的形式给出响应,例如:
“状态= OK&BrowserUrl = HTTP%3A%2F%2fwww.jaja.com%3a7106%2fxxx&散列= 8614C21DD93749339906DB35C51B06006B33DC8C192F40DFE2DB6549942C837C4452E1D1333DE9DB7814B278C8B9E3C34D1A76D2F937DEE57502336E0A071412” P>
我在这里面临的问题是如何将此响应序列化为此类的对象:
public class PaynowResponseModel : PayNowBase
{
public string browserurl { get; set; }
public string pollurl { get; set; }
public string status { get; set; }
public string hash { get; set; }
}
我试过下面的方法
public static object ByteArrayToObject(Byte[] buffer)
{
BinaryFormatter formatter = new BinaryFormatter();
MemoryStream stream = new MemoryStream(buffer);
object rval = formatter.Deserialize(stream);
stream.Close();
return rval;
}
我这样称呼:
var responseObj = (PaynowResponseModel) General.ByteArrayToObject(responsebytes);
但它不起作用。我在 ByteArrayToObject 方法中遇到异常
System.Runtime.Serialization.SerializationException 被捕获
HResult=-2146233076 消息=输入流不是有效的二进制文件 格式。起始内容(以字节为单位)是: 73-74-61-74-75-73-3D-4F-6B-26-62-72-6F-77-73-65-72 ...
来源=mscorlib 堆栈跟踪: 在 System.Runtime.Serialization.Formatters.Binary.SerializationHeaderRecord.Read(__BinaryParser 输入) 在 System.Runtime.Serialization.Formatters.Binary.__BinaryParser.ReadSerializationHeaderRecord() 在 System.Runtime.Serialization.Formatters.Binary.__BinaryParser.Run() 在 System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler 处理程序,__BinaryParser serParser,布尔 fCheck,布尔 isCrossAppDomain, IMethodCallMessage 方法CallMessage) 在 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(流 serializationStream, HeaderHandler 处理程序, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage 方法CallMessage) 在 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(流 序列化流)
请协助我如何解决这个问题或在那里实现我的目标的替代方法。
提前谢谢你:)
【问题讨论】:
标签: c# .net asp.net-mvc serialization webclient