我正在尝试使用带有 POST 方法的表单将一些数据发送到 Web 服务,它使用 XML 页面对其进行响应。我的 POST 部分使用简单的表单并在我的视图中提交。但是,我不确定如何处理来自这里的响应,所以我试图将它全部移到控制器中(似乎它应该在那里)。所以理论上是让用户点击一个按钮,将模型数据发送到控制器。在控制器中,我试图组合一个 webrequest,如下所示:
[HttpPost]
public ActionResult SubmitToCris(NewApplicantViewModel model)
{
string serviceURL = "https://www.blahblah.com/XMLServer/XMLServer.cgi";
string postData = "MaxRecords=0&UserID=skapi&Password=sk12024&Version=2.0&RequestType=searchName&FirstName=Nathan"
+ "&LastName=Smith&DOB=1984/2/2";
WebRequest request = WebRequest.Create(serviceURL);
request.Method = "POST";
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
request.ContentLength = byteArray.Length;
Stream dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
WebResponse response = request.GetResponse();
dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
return View();
}
我似乎没有得到回应,所以我挖了一个发现“流不支持搜索操作”。看起来这是由于无法读取字节数组的长度造成的。我将通过循环修复它。
所以我现在正在寻找的是,这甚至是正确的方法吗?我整个早上都在研究这个,并想出了多种方法,我选择了这个,因为它似乎是最直接的方法。
任何人,如果我能得到一个 MVC 或 ASP 特定的示例或教程来说明这一切应该如何工作,那就太好了。谢谢。
- - - -编辑 - - - - - - -
更改了 postData 变量。
这是我在发布数据后从其他公司的网络服务器收到的响应:
<?xml version="1.0" encoding="UTF-8"?>
<HistoryResponse>
<ResponseType>resultsList</ResponseType>
<Matches>0</Matches>
<SessionID>75803234r23df3de</SessionID>
<RecStart>0</RecStart>
<ClientCode></ClientCode>
<Results></Results>
</HistoryResponse>