У нас есть сервер на работе, который мы можем запросить для фотографий с помощью веб-службы. Человек, который поддерживает сервер, является разработчиком Java, но мне нужно иметь возможность запрашивать сервер с помощью dotNET, поскольку я использую SDK для интеграции с существующим приложением, которое мы запускаем, и она неохотно/не может помочь с dotNET.HttpWebResponse с несколькими частями
Это моя просьба к фото (обратите внимание на требуемый сертификат): -
private WebResponse Request()
{
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(Validate);
X509Certificate certificate = X509Certificate.CreateFromCertFile("wmbuat.crt");
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(server.Text);
request.Headers.Add("SOAP:Action");
request.ContentType = "text/xml";
request.Accept = "text/xml";
request.Method = "POST";
request.ClientCertificates.Add(certificate);
GetXml().Save(request.GetRequestStream());
return request.GetResponse();
}
private static Boolean Validate(Object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
{
return true;
}
Я могу обращаться к серверу не драм, но HttpWebResponse состоит из двух частей в одном потоке - в XML-части, содержащую информацию о фотографии и двоичной части, которая является JPEG. Например: -
--WMBMIME2Boundaryurn_uuid_C123
Content-Type: text/xml; charset=utf-8
Content-Transfer-Encoding: binary
Content-ID: <0.urn:uuid:C123[email protected]>
<NS1:Envelope xmlns:NS1="http://schemas.xmlsoap.org/soap/envelope/">...</NS1:Envelope>
--WMBMIME2Boundaryurn_uuid_C123
Content-Type: application/octet-stream
Content-Transfer-Encoding: binary
Content-ID: <987>
yoya..JFIF...
Я видел пару вопросов здесь в связи с этим, но я, кажется, не быть в состоянии использовать сертификат с этими библиотеками. Есть ли способ обернуть выходной поток, чтобы получить части как отдельные объекты? Я рад, что это просто String и byte [], и я могу преобразовать его в XML и Image самостоятельно.
Я попытался с помощью StreamReader и чтения на вторую пустую строку, которая где начинается двоичные данные, а затем читают остаток от исходного потока в файл, но это не работает: -/
Любая помощь будет принята с благодарностью.
Спасибо.
Hi welegan, Благодарим за это, но да, как вы упомянули, у меня есть доступ к dotNET 4.0 (технически большая часть компьютеров на нашем рабочем месте работает на 3.5, но я могу обновить любой из них до 4.0 по мере необходимости). Мы все еще на XP, поэтому я не могу установить 4.5. – SignalOne
yikes, ладно, удачи тогда, найдя хороший способ разобрать http mime parts, я уверен, что для этого есть учебники, но есть много исправлений iirc. – welegan