XML ページで応答する POST メソッドを含むフォームを使用して、Web サービスにデータを送信しようとしています。シンプルなフォームで動作する 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 変数を変更しました。
データを投稿した後、他社の Web サーバーから受け取った応答は次のとおりです。
<?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>