I
Ipsita
Hi!
I am trying SOAP with DIME attachments in web services. The web
service sends the file as attachment say "test.doc", and the client
has to read that and populate it in a textbox control. I had asked
this question earlier, and got the reply that the data is tranferred
in binary format on the wire. I read the stream, and convert it to
string, but I get some junk characters in my textbox. I am writing my
code below, so that you can see what I am doing wrong, and correct me.
This is what I do:
On Server:
----------
[WebMethod]
public void GetDoc()
{
SoapContext respContext = ResponseSoapContext.Current;
DimeAttachment dimeAttach = new DimeAttachment("application/msword",
TypeFormat.MediaType,
@"D:\Images\Test.doc");
respContext.Attachments.Add(dimeAttach);
}
On Client:
----------
private void btnGetDoc_Click(object sender, System.EventArgs e)
{
MyDimeService svc = new MyDimeService();
svc.GetDoc();
if (svc.ResponseSoapContext.Attachments.Count == 1)
{
MessageBox.Show("Got it!\n");
// Get the stream and do something with it
Stream s = svc.ResponseSoapContext.Attachments[0].Stream;
byte [] binaryData = new byte[s.Length];
long bytesRead = s.Read(binaryData, 0, binaryData.Length);
s.Close();
string base64String;
try
{
base64String = System.Convert.ToBase64String(binaryData, 0,
binaryData.Length);
}
catch (System.ArgumentNullException)
{
System.Console.WriteLine("Binary data array is null.");
return;
}
txtGetDoc.Text = base64String;
} //end of if
} //end of private..
Waiting for an answer...
Thanks
Ipsita
I am trying SOAP with DIME attachments in web services. The web
service sends the file as attachment say "test.doc", and the client
has to read that and populate it in a textbox control. I had asked
this question earlier, and got the reply that the data is tranferred
in binary format on the wire. I read the stream, and convert it to
string, but I get some junk characters in my textbox. I am writing my
code below, so that you can see what I am doing wrong, and correct me.
This is what I do:
On Server:
----------
[WebMethod]
public void GetDoc()
{
SoapContext respContext = ResponseSoapContext.Current;
DimeAttachment dimeAttach = new DimeAttachment("application/msword",
TypeFormat.MediaType,
@"D:\Images\Test.doc");
respContext.Attachments.Add(dimeAttach);
}
On Client:
----------
private void btnGetDoc_Click(object sender, System.EventArgs e)
{
MyDimeService svc = new MyDimeService();
svc.GetDoc();
if (svc.ResponseSoapContext.Attachments.Count == 1)
{
MessageBox.Show("Got it!\n");
// Get the stream and do something with it
Stream s = svc.ResponseSoapContext.Attachments[0].Stream;
byte [] binaryData = new byte[s.Length];
long bytesRead = s.Read(binaryData, 0, binaryData.Length);
s.Close();
string base64String;
try
{
base64String = System.Convert.ToBase64String(binaryData, 0,
binaryData.Length);
}
catch (System.ArgumentNullException)
{
System.Console.WriteLine("Binary data array is null.");
return;
}
txtGetDoc.Text = base64String;
} //end of if
} //end of private..
Waiting for an answer...
Thanks
Ipsita