0

这个问题与跨基于 JSP/Servelet 的 Web 应用程序和基于 ASP.NET MVC 的 Web 应用程序的跨站点提交有关。我可以将 ASP.NET Web 项目中的 NameValueCollection 对象提交到另一个 ASP.NET MVC 项目,如下所示。

using (var client = new WebClient())
{
client.Credentials = CredentialCache.DefaultNetworkCredentials;
string transId = Guid.NewGuid().ToString(); //In Java we may use UUID class
var data = new NameValueCollection
{
{ "TransId", transId },
{ "Name", "Regi" },
{ "DOB", "10/17/2013" },
{ "ZIPCode", "673010" },
};
var result = client.UploadValues("http://localhost:50976/api/Trans/Trans", data);
string s = Encoding.ASCII.GetString(result); //May be Base64.encodeToString(fileData, Base64.CRLF) in Java?

if (s == "1")
{

Response.Redirect("http://localhost:50976/Product/ProductList?TransId=" + transId + "");
}
}

ASP.NET MVC 项目有一个 WebAPI 正在捕获这个提交,如下所示。

public int Trans(TransViewModel transViewModel)
{

            return 1;
}

我的 ViewModel 定义如下

public class TransViewModel
{
        public string TransId { get; set; }
        public string Name { get; set; }
        public DateTime DOB { get; set; }
}

所以现在我需要用基于 Java 的 Web 应用程序替换我的第一个 ASP.NET MVC 应用程序正在调用的 WebProject。如何使用备用 JAVA 类代替 WebClient 完成相同的提交,并将 NameValueCollection 类型提交到同一个 ASP.NET MVC 应用程序?这个提交应该被上面的 ASP.NET MVC 应用程序通过 ViewModel 接受

4

2 回答 2

0

嗯.. 我没有尝试过,但如果你只是使用常规的 HTTP GET 或 POST,那么你使用什么 web 框架并不重要。ASP.NET MVC 想要的只是一个 NORMAL 请求(例如:http: //yourwebsite.com :8081/Main/Index?name=Me&email=me@gmail.com)。如果您从任何 Java 或其他 Web 框架发送它,您的 MVC 路由器将能够将它们映射到特定的操作方法。在我的示例中,这是带有参数名称和电子邮件(字符串类型)的主控制器和索引操作(HTTP GET)。Post 也一样(为操作添加 HTTP POST 属性)。如果您使用模型,可能会出现问题。在这种情况下,我总是使用 fiddler 来查看我发送给 MVC 的确切内容,并且您还必须了解标准 MVC 模型绑定的工作原理。如果您发现您的 java 数据结构无法使用 MVC 标准模型绑定器处理,您可以更改数据结构或实现自定义模型绑定器并直接访问所有请求数据。MVC 是一个非常可插拔的框架,我相信这是有史以来最好的 Web 框架之一!

于 2013-10-22T02:27:00.540 回答
0

我不确定您是否正在尝试这样做。但我认为没有办法在 MVC 之间直接传递数据,比如说普通的 java servlet。您总是以 HTTP 请求的形式发送数据,而如何处理它们取决于 Web 框架。如果您需要类似于 MVC,您可以使用 Spring MVC (java)。同样,我不确定您要达到的目标。但是,您也可以从服务器进行任何基于 HTTP 的调用。例如,您在 java 环境中有一个映射到 /doSomething 的 servlet。在 get 方法内的 servlet 中,您可以访问请求参数。因此,在您的 MVC 项目中,您可以自由地对 servlet 映射地址进行基于服务器端 http 的调用并传递任何参数。在 servlet 中生成输出并返回到 mvc 服务器。以后怎么处理就看你自己了!

于 2013-10-23T05:38:22.363 回答