2016-06-02 4 views
-1

Ich versuche, eine einfache Antwort von einer lokalen .net-Website zu erhalten. (Really Ich versuche nur, um zu sehen, was der Inhalt-Körper wie von der Server-Seite aussieht.) Hier ist die Controller-Methode, die die Antwort schickt:C# .net Http Antwort 411 Länge erforderlich, wenn die Länge enthalten ist

public HttpResponseMessage Post([FromBody]string value) 
     { 
      data.Add(value); 
      var msg = Request.CreateResponse(HttpStatusCode.Created); 
      msg.Headers.Location = new Uri(Request.RequestUri + "/" + (data.Count-1).ToString()); 
      msg.Content = new StringContent(value); 
      return msg; 
     } 

Und hier ist der Code, der die Anfrage wird machen:

 HttpWebRequest request; 
     request = (HttpWebRequest)WebRequest.Create ("http://localhost:50203/api/Values"); 
     request.Method = "POST"; 

     try 
     { 
      WebResponse response = (HttpWebResponse)request.GetResponse(); 
      Stream dataStream = response.GetResponseStream(); 
      byte[] requestBody = ASCIIEncoding.ASCII.GetBytes(HttpUtility.UrlEncode("grant_type=client_credentials")); 
      request.ContentLength = requestBody.Length; 
      dataStream.Write(requestBody, 0, requestBody.Length); 
      StreamReader reader = new StreamReader(dataStream); 
      myString = reader.ReadToEnd(); 


     } 

Ich bekomme die Antwortnachricht: HTTP Error 411. The request must be chunked or have a content length. Aber wie Sie sehen können, weise ich die Länge des Inhalts in der Zeile: request.ContentLength = requestBody.Length;.

Warum erhalte ich diesen Fehler?

+0

Es sieht so aus, als würden Sie die 'request.ContentLength' nicht zuweisen bis * nachdem * Sie die Anfrage gesendet haben, also wie würde das helfen? – itsme86

+0

Du hast recht. Post das als Antwort und ich werde es akzeptieren. – jimboweb

+0

Ich schätze das Angebot, aber ich habe immer noch keine Antwort für Sie. Ich bin mir nicht sicher, wie Sie die Länge der Anfrage kennen würden, bevor Sie die Antwort erhalten. Eine Art Fangen 22 Problem. – itsme86

Antwort

0

Dank Hilfe von itsme86 konnte ich sehen, was vor sich ging. Es hat damit zu tun, dass die HttpWebRequest-Methode falsch verstanden wurde. Ich habe versucht, die Inhaltslänge festzulegen und auf die Anfrage zu schreiben, nachdem ich sie bereits mit der GetResponse-Methode veröffentlicht hatte. Ich hätte zuerst die Länge angeben sollen. Das war keine besonders gute Frage, und niemand sonst sollte antworten.

Verwandte Themen