я отправил запрос к API мыла с приложением, как показано ниже
WebResponse response = null;
try
{
string sWebAddress = "http://myserver-id/axis2/services/NGOAddDocServiceImp?wsdl";
string filePath = @"C:/Users/ashokr/Desktop/download.png";
string filename = "download.png";
string soapxml = "<soap:Envelope xmlns:soap=\"http://www.w3.org/2003/05/soap-envelope\" xmlns:prov=\"http://provider.ws.jts.omni.newgen.com\" xmlns:xsd=\"http://adddoc.bdo.ws.jts.omni.newgen.com/xsd\"><soap:Header/><soap:Body><prov:addDocument_Ext><prov:param0><xsd:cabinetName>iw_consumer</xsd:cabinetName><xsd:documentPath></xsd:documentPath><xsd:folderIndex>4338977</xsd:folderIndex><xsd:jtsAddress>10.24.96.98</xsd:jtsAddress><xsd:name>" + filename + "</xsd:name><xsd:portId>3333</xsd:portId><xsd:userDBId>607323535</xsd:userDBId><xsd:userName>IBG_BFIL_Assets_User</xsd:userName><xsd:userPassword>Test@351</xsd:userPassword><xsd:volumeId>1</xsd:volumeId></prov:param0></prov:addDocument_Ext></soap:Body></soap:Envelope>";
string boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x");
byte[] boundarybytes = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "\r\n");
HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(sWebAddress);
wr.Headers.Add("Accept-Encoding", "gzip,deflate");
// wr.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip, deflate");
//wr.Headers.Add(HttpRequestHeader.ContentEncoding, "gzip");
// wr.Headers.Add("Content-Transfer-Encoding", "8bit");
wr.SendChunked = false;
//wr.Headers.Add("SOAPAction", "");
// wr.ContentLength = 650366;
wr.ContentType = "multipart/related; type =\"application/txt\"; start=\"<rootpart@soapui.org>\"; boundary=" + boundary;
wr.Accept = "Accept: text/xml, multipart/related, text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2";
// wr.ContentType = "multipart/related;type=\"application/soap + xml\";start=\"<rootpart@soapui.org>\"; boundary=" + boundary;
wr.Method = "POST";
wr.Host = "10.24.96.98:8480";
wr.UserAgent = "Apache-HttpClient/4.1.1 (java 1.5)";
//wr.Headers.Add("MIME-Version", "1.0");
// wr.Headers.Add("Content-ID","<1112534000021702.png>");
//wr.Headers.Add("Content-Disposition", "attachment");
//wr.Headers.Add("Content-ID:", "test.png");
// wr.Headers.Add("Content-Transfer-Encoding", "8bit");
//wr.Accept = "gzip,deflate";
wr.KeepAlive = true;
wr.Credentials = System.Net.CredentialCache.DefaultCredentials;
Stream stream = wr.GetRequestStream();
string formdataTemplate = "Content-Disposition: form-data; name=\"{0}\"\r\n\r\n{1}";
stream.Write(boundarybytes, 0, boundarybytes.Length);
byte[] formitembytes = System.Text.Encoding.UTF8.GetBytes(filePath);
stream.Write(formitembytes, 0, formitembytes.Length);
stream.Write(boundarybytes, 0, boundarybytes.Length);
string headerTemplate = "Content-Disposition: form-data;Content-ID: \"rootpart@soapui.org\"; name =\"{0}\"; filename=\"{1}\"\r\nContent-Type: {2}\r\n\r\n";
string header = string.Format(headerTemplate, "file", Path.GetFileName(filePath), Path.GetExtension(filePath));
byte[] headerbytes = System.Text.Encoding.UTF8.GetBytes(header);
stream.Write(headerbytes, 0, headerbytes.Length);
FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
byte[] buffer = new byte[4096];
int bytesRead = 0;
while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
stream.Write(buffer, 0, bytesRead);
fileStream.Close();
byte[] trailer = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "--\r\n");
stream.Write(trailer, 0, trailer.Length);
using (StreamWriter stmw = new StreamWriter(stream))
{
stmw.Write(soapxml);
// stream.Close();
}
response = wr.GetResponse();
dynamic encoding = ASCIIEncoding.ASCII;
using (var reader = new System.IO.StreamReader(response.GetResponseStream(), encoding))
{
string responseText = reader.ReadToEnd();
}
byte[] myData;
using (var webResponse = wr.GetResponse())
{
var responseStream1= webResponse.GetResponseStream();
//myData = ReadFully(responseStream); // done with the stream now, dispose of it
}
// Do whatever you need with the response
//string responseString = Encoding.ASCII.GetString(myData);
Stream responseStream = response.GetResponseStream();
StreamReader streamReader = new StreamReader(responseStream);
string responseData = streamReader.ReadToEnd();
return responseData;
}
catch (WebException webex)
{
WebResponse errResp = webex.Response;
using (Stream respStream = errResp.GetResponseStream())
{
StreamReader reader = new StreamReader(respStream);
string text = reader.ReadToEnd();
// Response obj = new Response();
// obj.Status = "Fail";
// obj.ErrorMessage = reader.ToString();
//return obj;
return "";
}
Я получаю сообщение об ошибке ниже
<?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"><soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing"><wsa:Action>http://www.w3.org/2005/08/addressing/soap/fault</wsa:Action></soapenv:Header><soapenv:Body><soapenv:Fault><soapenv:Code><soapenv:Value>soapenv:Receiver</soapenv:Value></soapenv:Code><soapenv:Reason><soapenv:Text xml:lang="en-US">Part content ID cannot be blank for non root MIME parts</soapenv:Text></soapenv:Reason><soapenv:Detail /></soapenv:Fault></soapenv:Body></soapenv:Envelope>
' Пожалуйста, предложите мне решить эту проблему