2010-08-08 4 views
0

J'envoie une demande de publication HTTP en utilisant HTTPWebRequest à une URL. J'envoie les données de poste en utilisant le type de contenu multipart/form-data avec la longueur du contenu du corps. Cependant, du côté serveur, je suis incapable de récupérer le corps. Je ne peux voir que les en-têtes envoyés. La longueur du contenu du corps que j'ai envoyé correspond également. Pourquoi ne puis-je pas récupérer le corps?Impossible d'extraire le corps du message côté serveur à partir de HTTP Message

La méthode de requête ressemble à ceci:

public void Reset(string originalFileData, string uploadLocation) 
    { 
     TcpClient client = new TcpClient(); 
     IPEndPoint serverEndPoint = new IPEndPoint(IPAddress.Parse(Server), portNo); 
     client.Connect(serverEndPoint); 
     string responseContent; 
     string serverUrl = "http://" + Server + ":" + portNo + "/abc.aspx" + "?uplvar=" + uploadLocation; 
     HttpWebRequest request = (HttpWebRequest)WebRequest.Create(serverUrl); 
     request.ContentType = "multipart/form-data"; 
     request.Method = "POST"; 
     request.ServicePoint.Expect100Continue = false; 
     string postData = originalFileData; 
     byte[] byteArray = Encoding.UTF8.GetBytes(postData); 
     request.ContentLength = byteArray.Length; 
     Stream dataStream = request.GetRequestStream(); 
     dataStream.Write(byteArray, 0, byteArray.Length); 
     dataStream.Close(); 
     HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
     response.Close(); 
    } 

Edit: J'ai oublié de Métion, je suis en mesure de récupérer le corps sur la première fois que j'envoie la demande, mais sur toutes les demandes ultérieures que j'envoie, je Je ne suis pas capable de le récupérer. Je crée une nouvelle connexion chaque fois que j'envoie une demande. Ainsi, quelque chose pourrait empêcher le corps de la demande d'être reteieved. Je ne suis pas sûr pourquoi.

+2

Remarque: Votre code TcpClient au début n'a aucune pertinence pour le reste. –

Répondre

0

Essayez de remplacer

request.ContentType = "multipart/form-data"; 

avec

request.ContentType = "application/x-www-form-urlencoded"; 

ou vérifier SO answer pour le code qui fonctionne avec multipart/formdata.

+0

J'ai essayé cette approche. Ça n'a pas marché. J'ai fait une modification à la question originale à la fin. Cela pourrait aider à clarifier davantage. Merci. – gofeddy

+1

Ensuite, je lancer Fiddler et voir ce qui se passe sur le fil pour la première et la deuxième demande, et les comparer. –

Questions connexes