2013-11-25 2 views
1

Я управляю обоими сайтами, поэтому любой метод будет работать.Отправить массив байтов с одного сайта на другой (и обратно)

Там должна быть более простой способ, то следующее:

byte[] result; 
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://blahblah.com/blah.ashx"); 
byte[] inputToSend = new byte[] { 1, 2, 3 }; 
request.Method = "POST"; 
request.ContentType = "image/jpeg"; 
request.Timeout = 30 * 1000; 
request.ContentLength = inputToSend.Length; 
using (Stream stream = request.GetRequestStream()) 
    stream.Write(inputToSend, 0, inputToSend.Length); 
request.Headers.Add("blah", "more blah");//This is for authentication. 
WebResponse r = request.GetResponse(); 
using (MemoryStream ms = new MemoryStream()) 
{ 
    r.GetResponseStream().CopyTo(ms); 
    result = ms.ToArray(); 
} 

Не так?

(Код запрашивающая сторона. Ответчик проще.)

+0

возможный дубликат [Как прочитать ответ WebClient после публикации данных? (.NET)] (http://stackoverflow.com/questions/1014935/how-to-read-a-webclient-response-after-posting-data-net) –

ответ

1

Вы могли бы потенциально использовать WebClient, чтобы сделать код меньше. В частности, UploadData метод:

using (var wc = new WebClient()) { 
    wc.UploadData(yourUrl, inputToSend); 
} 

..и скачать:

using (var wc = new WebClient()) { 
    var receivedData = wc.DownloadData(yourUri); 
} 

Вы можете добавить любые заголовки вам нужно через WebClient Headers свойство:

wc.Headers.Add("blah", "blah"); // your auth stuff here. 
+0

Спасибо. Это выглядит многообещающе. Но есть ли способ запросить + ответ с помощью WebClient? (Полученные данные соответствуют полученным данным) – ispiro

+0

ОК. Неважно, я нашел это http://stackoverflow.com/a/1014944/939213, показывающее, что 'UploadData' возвращает ответ. – ispiro

Смежные вопросы