asp.net-mvc-3 - WebService ASP.NET MVC 3发送和接收

标签 asp.net-mvc-3 web-services

我已经花了几天时间思考如何满足新要求。

我有两个网站。第一个允许用户填写应用程序。第二个网站是用于管理用户应用程序的内部网站。我需要开发一个“Web服务”,将网站1的应用程序数据发送到网站2,并向网站2返回成功或失败的响应。我以前从未做过Web服务,并且对从何开始感到困惑。我一直在网上阅读各种示例,但是它们似乎都只是构建Web服务的起点……没有具体的示例。

因此,要发布数据网站1,我的 Controller 方法会是什么样?我是否使用Json将数据发布到网站2?什么样的例子?指向网站2的方法中是否存在某种形式的重定向?

因此,为了将响应发布回网站2,该 Controller 方法将是什么样?我想我会再次使用Json将响应发送回网站1?指向网站1的方法中是否存在某种形式的重定向?

最佳答案

我将使用JSON并将应用程序发布到Web服务。

首先,我假设应用程序数据包含在某种对象中。使用JSON.Net将对象序列化为JSON。它看起来像下面的代码。

var application = new Application();
string serializedApplication = JsonConvert.Serialize(application);

其次是将代码发布到端点(webservice,mvc操作)。为此,您需要向端点发出一个HTTPRequest。以下代码是我用来发布代码的代码。
    public bool Post(string url, string body)
    {
        //Make the post
        ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, errors) => true;

        var bytes = Encoding.Default.GetBytes(body);
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
        Stream stream = null;
        try
        {
            request.KeepAlive = false;
            request.ContentLength = bytes.Length;
            request.ContentType = "application/x-www-form-urlencoded";
            request.Timeout = -1;
            request.Method = "POST";
            stream = request.GetRequestStream();
            stream.Write(bytes, 0, bytes.Length);

        }
        finally
        {
            if (stream != null)
            {
                stream.Flush();
                stream.Close();
            }
        }

        bool success = GetResponse(request);

        return success;
    }

    public bool GetResponse(HttpWebRequest request)
    {
        bool success;

        using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
        {

            using (Stream responseStream = response.GetResponseStream())
            {
                if (response.StatusCode != HttpStatusCode.OK && response.StatusCode != HttpStatusCode.Created)
                {
                    throw new HttpException((int)response.StatusCode, response.StatusDescription);
                }

                var end = string.Empty;
                using (StreamReader reader = new StreamReader(responseStream))
                {
                    end = reader.ReadToEnd();
                    reader.Close();

                    success = JsonConvert.DeserializeObject<bool>(end);
                }

                response.Close();
            }
        }

        return success;
    }

因此,现在您可以将JSON POST到端点并接收响应,下一步就是创建端点。以下代码将使您开始在mvc中的端点上运行,该端点将接收应用程序并对其进行处理。
    [HttpPost]
    public ActionResult SubmitApplication()
    {
        //Retrieve the POSTed payload
         string body;
         using (StreamReader reader = new StreamReader(Request.InputStream))
         {
             body = reader.ReadToEnd();
             reader.Close();
         }

         var application = JsonConvert.Deserialize<Application>(body);

         //Save the application
         bool success = SaveApplication(application);

         //Send the server a response of success or failure.
        return Json(success);
    }

上面的代码是一个好的开始。请注意,我尚未测试此代码。

关于asp.net-mvc-3 - WebService ASP.NET MVC 3发送和接收,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11568453/

相关文章:

c# - 计算 IEnumerable<HttpPostedFileBase> 的非空元素

c# - 我如何使用ftp服务器上传文件?

java - 使用来自 java 的证书连接到 web 服务

调用 WSDL 提供的函数时,PHP 5 SOAP 客户端返回 NULL

java - 使用 PHP 脚本在免费虚拟主机上创建 Web 服务

java - 尝试向 Web 服务发送 SOAP 请求时出现 WS 安全错误

c# - 如何在我的连接字符串上使用 Web.Config 转换?

c# - 如何从 Access .mdb 文件创建 .edmx 模型?

c# - 在 MVC3 中的布局文件中显示帐户信息的最佳方式

visual-studio-2008 - 如何停止Visual Studio运行所有Web服务