2010-02-11 24 views
6

Tôi có một khách hàng và một máy chủ.HttpWebRequest/HttpResponse: Cách gửi dữ liệu trong phản hồi?

Về phía khách hàng tôi có:

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(); 

Về phía server tôi có:

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(); 
} 

Khách hàng nhận được phản hồi với đúng StatusCode. Mặc dù, nếu tôi làm (int)response.ContentLength; trên máy khách, tôi nhận được 0. Tôi không thể đọc chuỗi "Xin chào" sau khi tôi nhận được phản hồi (phía máy khách).

+1

Tôi biết đây là chủ đề cũ nhưng có thể giúp ai đó. Hãy thử http://stackoverflow.com/questions/4088625/net-simplest-way-to-send-post-with-data-and-read-response/19448979#19448979 – Murali

Trả lời

3

Có thể đặt loại nội dung trước khi ghi thực tế hoặc xả luồng sẽ giúp ích.

+0

Tôi đã làm điều đó, tuy nhiên có một bản sao/quá khứ vấn đề ... Vì vậy, vẫn không làm việc với các loại nội dung. – user252816

1

Bạn chưa đặt ContentLength trên máy chủ. Có lẽ điều đó sẽ giúp ích?

+0

Tôi có thể đặt contentLength trên máy chủ bằng cách nào? – user252816

+0

'response.ContentLength = n;' không hoạt động? Nếu không, thì tôi nhầm lẫn về 'ContentLength' là vấn đề của bạn. –

Các vấn đề liên quan