2010-02-11 3 views
6

J'ai un client et un serveur.HttpWebRequest/HttpResponse: Comment envoyer des données dans la réponse?

Du côté client J'ai:

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

Du côté du serveur, j'ai:

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

Le client reçoit la réponse à la StatusCode correcte. Bien que, si je fais (int)response.ContentLength; sur le client, je reçois 0. Je ne peux pas lire la chaîne "Bonjour" après avoir reçu la réponse (côté client).

+1

Je sais que c'est un vieux fil, mais peut aider quelqu'un. Essayez http://stackoverflow.com/questions/4088625/net-simplest-way-to-send-post-with-data-and-read-response/19448979#19448979 – Murali

Répondre

3

Il est peut-être utile de définir le type de contenu avant l'écriture ou le vidage du flux.

+0

Je l'ai fait, mais il y avait une copie/passé problème ... Donc, ne fonctionne toujours pas avec le type de contenu. – user252816

1

Vous n'avez pas défini ContentLength sur le serveur. Peut-être que cela aiderait?

+0

comment puis-je définir le contentLength sur le serveur? – user252816

+0

'response.ContentLength = n;' ne fonctionne pas? Si ce n'est pas le cas, alors je me trompe sur 'ContentLength' étant votre problème. –

Questions connexes