2010-02-11 3 views
6

У меня есть клиент и сервер.HttpWebRequest/HttpResponse: Как отправить данные в ответ?

На стороне клиента у меня есть:

HttpWebRequest request = 
    (HttpWebRequest)WebRequest.Create("http://localhost/fa/Default.aspx"); 
request.Method = "POST";     

byte[] data = Encoding.ASCII.GetBytes(GetSAMLRequestB64()); 

request.ContentType = "text/xml"; 
request.ContentLength = data.Length; 
Stream stream = request.GetRequestStream(); 
stream.Write(data, 0, data.Length); 

HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
Stream responseStream = response.GetResponseStream(); 

На стороне сервера у меня есть:

public void ProcessRequest(HttpContext httpContext) 
{ 
    HttpResponse response = httpContext.Response;    
    response.Clear(); 
    response.BufferOutput = true; 
    response.StatusCode = 200; // HttpStatusCode.OK; 
    response.Write("Hello"); 
    response.ContentType = "text/xml"; 
    response.End(); 
} 

клиент получает ответ с правильным StatusCode. Хотя, если я делаю (int)response.ContentLength; на клиенте, я получаю 0. Я не могу прочитать строку «Привет» после получения ответа (на стороне клиента).

+1

Я знаю, что это старая нить, но может кому-то помочь. Попробуйте http://stackoverflow.com/questions/4088625/net-simplest-way-to-send-post-with-data-and-read-response/19448979#19448979 – Murali

ответ

3

Возможно, задание типа содержимого до фактической записи или промывки потока поможет.

+0

Я сделал это, однако была копия/прошлая проблема ... Таким образом, все еще не работает с типом контента. – user252816

1

Вы не установили ContentLength на сервере. Может быть, это поможет?

+0

Как я могу установить contentLength на сервере? – user252816

+0

'response.ContentLength = n;' не работает? Если это не так, я ошибаюсь в том, что проблема 'ContentLength' является вашей проблемой. –