ストリームから複数のファイルを受信し、それらを別のファイルに読み取り、これらのファイルに対していくつかの質問を実行する Web サービスを c# で作成したいと考えています (たとえば、送信する必要があるファイルは XML です)。
これは私がこれまでに行ったことです:
1) 次の方法でファイルを送信します。これにより、リクエストが作成され、Web サービスにポストされます。
public void postMultipleFiles()
{
string url = "<the url of the web service>";
HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
httpWebRequest.Method = "POST";
httpWebRequest.KeepAlive = true;
httpWebRequest.ContentType = "text/xml; encoding='utf-8'";
Stream memStream = new MemoryStream();
string[] files = { @"<file1 location>", @"<file2 location>" };
/*AJ*/
foreach (string file in files)
{
FileStream fileStream = new FileStream(file, FileMode.Open, FileAccess.Read);
byte[] buffer = new byte[1024];
int bytesRead = 0;
while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
{
memStream.Write(buffer, 0, bytesRead);
}
fileStream.Close();
}
httpWebRequest.ContentLength = memStream.Length;
Stream requestStream = httpWebRequest.GetRequestStream();
memStream.Position = 0;
byte[] tempBuffer = new byte[memStream.Length];
memStream.Read(tempBuffer, 0, tempBuffer.Length);
memStream.Close();
requestStream.Write(tempBuffer, 0, tempBuffer.Length);
requestStream.Close();
try
{
WebResponse webResponse = httpWebRequest.GetResponse();
Stream stream = webResponse.GetResponseStream();
StreamReader reader = new StreamReader(stream);
response.InnerHtml = reader.ReadToEnd();
//Response.Write(reader.ReadToEnd());
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
httpWebRequest = null;
}
2) 次のように Web サービスでストリームを読み取ります。
[WebMethod]
public string MultiFilePost()
{
string xmls = "";
if (HttpContext.Current.Request.InputStream != null)
{
StreamReader stream = new StreamReader(HttpContext.Current.Request.InputStream);
xmls = stream.ReadToEnd(); // added to view content of input stream
xmls = xmls.Replace("\r\n", "").Replace("\r", "").Replace("\n", "");
}
return xmls;
}
しかし、これはファイルを文字列に読み込み、次々に追加されます。
これを 2 つの異なる XML ファイルに入れるにはどうすればよいですか?
前もって感謝します....