C# 通过webrequest发送对象并在web服务中接收
我想将对象发送到应用程序并从该应用程序接收相同的对象。我想在两个应用程序之间发送和接收消息类。这是我的客户代码:C# 通过webrequest发送对象并在web服务中接收,c#,asp.net,C#,Asp.net,我想将对象发送到应用程序并从该应用程序接收相同的对象。我想在两个应用程序之间发送和接收消息类。这是我的客户代码: [Serializable] public struct Messages { public string ErrorCode { get; set; } public string ErrorMessage { get; set; } public MessageType? messageType { get; s
[Serializable]
public struct Messages
{
public string ErrorCode { get; set; }
public string ErrorMessage { get; set; }
public MessageType? messageType { get; set; }
public SendMessageType? sendMessageType { get; set; }
public string UserCode { get; set; }
public DateTime MessageDateTime { get; set; }
public MethodName methodName { get; set; }
public int? FieldsCount { get; set; }
public List<KeyValue> Values { get; set; }
}
public struct KeyValue
{
public string key { get; set; }
public string value { get; set; }
}
public enum MessageType
{
Request,
Reply,
Reject
}
public enum MethodName
{
FindShebaFromDeposit = 1,
BalanceInquery = 2,
CheckBill = 3,
BillPayment = 4,
GetDepositList = 5,
NormalTransfer = 6,
GetPersonInfoFromDeposit = 7
}
public enum SendMessageType
{
way2,
way3
}
public void POST(Messages messages)
{
//Serialize the object into stream before sending it to the remote server
MemoryStream memmoryStream = new MemoryStream();
BinaryFormatter binayformator = new BinaryFormatter();
binayformator.Serialize(memmoryStream, messages);
//Cretae a web request where object would be sent
WebRequest objWebRequest = WebRequest.Create("http://localhost:13060/Default/Index");
objWebRequest.Method = "POST";
objWebRequest.ContentLength = memmoryStream.Length;
// Create a request stream which holds request data
Stream reqStream = objWebRequest.GetRequestStream();
//Write the memory stream data into stream object before send it.
byte[] buffer = new byte[memmoryStream.Length];
int count = memmoryStream.Read(buffer, 0, buffer.Length);
reqStream.Write(buffer, 0, buffer.Length);
//Send a request and wait for response.
try
{
WebResponse objResponse = objWebRequest.GetResponse();
//Get a stream from the response.
Stream streamdata = objResponse.GetResponseStream();
//read the response using streamreader class as stream is read by reader class.
StreamReader strReader = new StreamReader(streamdata);
string responseData = strReader.ReadToEnd();
}
catch (WebException ex)
{
throw ex;
}
}
消息类序列化并发送到服务器,但在服务器中为空?您正在以二进制格式对请求正文进行编码,不会直接反序列化。更好的方法是以JSON格式发送请求正文,默认情况下,该格式将由ASP.NET MVC反序列化 要序列化为JSON,可以使用多种选项。我用这个 或者,您可以使用或选择任何其他库来序列化为json
public void POST(Messages messages)
{
var request = (HttpWebRequest)WebRequest.Create("http://localhost:13060/Default/Index");
request.ContentType = "application/json";
request.Method = "POST";
using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
string json = new JavaScriptSerializer().Serialize(messages);
streamWriter.Write(json);
}
var response = (HttpWebResponse)request.GetResponse();
using (var streamReader = new StreamReader(response.GetResponseStream()))
{
var result = streamReader.ReadToEnd();
}
}
您正在以二进制格式对请求正文进行编码,不会直接反序列化。更好的方法是以JSON格式发送请求正文,默认情况下,该格式将由ASP.NET MVC反序列化 要序列化为JSON,可以使用多种选项。我用这个 或者,您可以使用或选择任何其他库来序列化为json
public void POST(Messages messages)
{
var request = (HttpWebRequest)WebRequest.Create("http://localhost:13060/Default/Index");
request.ContentType = "application/json";
request.Method = "POST";
using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
string json = new JavaScriptSerializer().Serialize(messages);
streamWriter.Write(json);
}
var response = (HttpWebResponse)request.GetResponse();
using (var streamReader = new StreamReader(response.GetResponseStream()))
{
var result = streamReader.ReadToEnd();
}
}
您正在以二进制格式发布。将您的消息序列化为JSON格式&然后您可以为我介绍一个示例吗?您是以二进制格式发布的。用JSON序列化您的消息&然后您可以为我介绍一个示例吗?现在,我如何显示响应(文件)?我想让它:publicmessagespost(Messages message){..}我用以下代码显示MyMessageClass:JsonConvert.DeserializeObject(result);阿德南,现在,我如何显示响应(文件)?我想让它:publicmessagespost(Messages message){..}我用以下代码显示MyMessageClass:JsonConvert.DeserializeObject(result);