Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过webrequest发送对象并在web服务中接收_C#_Asp.net - Fatal编程技术网

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);