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?
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
Du hast recht. Post das als Antwort und ich werde es akzeptieren. – jimboweb
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