string postData ="firstone="+ inputData;ASCIIEncoding encoding =newASCIIEncoding();byte[] byte1 = encoding.GetBytes(postData);// Set the content type of the data being posted.
myHttpWebRequest.ContentType="application/x-www-form-urlencoded";// Set the content length of the string being posted.
myHttpWebRequest.ContentLength= byte1.Length;Stream newStream = myHttpWebRequest.GetRequestStream();
newStream.Write(byte1,0, byte1.Length);
Aus einem meiner eigenen Codes:
var request =(HttpWebRequest)WebRequest.Create(uri);
request.Credentials=this.credentials;
request.Method= method;
request.ContentType="application/atom+xml;type=entry";
using (Stream requestStream = request.GetRequestStream())
using (var xmlWriter =XmlWriter.Create(requestStream,newXmlWriterSettings(){Indent=true,NewLineHandling=NewLineHandling.Entitize,})){
cmisAtomEntry.WriteXml(xmlWriter);}try{return(HttpWebResponse)request.GetResponse();}catch(WebException wex){var httpResponse = wex.ResponseasHttpWebResponse;if(httpResponse !=null){thrownewApplicationException(string.Format("Remote server call {0} {1} resulted in a http error {2} {3}.",
method,
uri,
httpResponse.StatusCode,
httpResponse.StatusDescription), wex);}else{thrownewApplicationException(string.Format("Remote server call {0} {1} resulted in an error.",
method,
uri), wex);}}catch(Exception){throw;}
Hallo Torbjorn, ich verwende die Anfrage, damit ich die 'request.GetResponse ();' erhalten kann. Wie würde das im obigen Beispiel funktionieren?
William Calleja
Wenn Sie GetRequestStream () aufrufen, wird der Server aufgerufen. Sie müssten dies also am Ende des obigen Beispiels hinzufügen.
Torbjörn Hansson
1
Gibt es eine Möglichkeit, den vollständigen Text in einem Anforderungsobjekt zu Debugging-Zwecken anzuzeigen? Ich habe versucht, es zu serialisieren und einen StreamReader zu verwenden, aber egal was ich tue, ich kann die Daten, die ich gerade in die Anfrage geschrieben habe, nicht sehen.
James
Fan-Freaking-Tastic!
@ James, Sie sollten in der Lage sein, Fiddler oder Wireshark zu verwenden, um die vollständige Anfrage mit ihrem Körper zu sehen.
var request =(HttpWebRequest)WebRequest.Create("https://example.com/endpoint");string stringData ="";// place body herevar data =Encoding.Default.GetBytes(stringData);// note: choose appropriate encoding
request.Method="PUT";
request.ContentType="";// place MIME type here
request.ContentLength= data.Length;var newStream = request.GetRequestStream();// get a ref to the request body so it can be modified
newStream.Write(data,0, data.Length);
newStream.Close();
Vermissen Sie etwas? Wie ein httpWReq.Content = newStream; Sie verwenden Ihr newStream-Objekt nicht mit Ihrer webRequest.
Yogurtu
3
Um @ Yogurtus Frage der Vollständigkeit halber zu beantworten , schreibt das StreamObjekt, newStreamauf das verwiesen wird , direkt auf den Text der Anfrage. Der Zugriff erfolgt über den Anruf an HttpWReq.GetRequestStream(). Es ist nicht erforderlich, etwas anderes für die Anforderung festzulegen.
MojoFilter
0
Die Antworten in diesem Thema sind alle großartig. Ich möchte jedoch einen anderen vorschlagen. Höchstwahrscheinlich haben Sie eine API erhalten und möchten diese in Ihr c # -Projekt aufnehmen. Mit Postman können Sie den API-Aufruf dort einrichten und testen. Sobald er ordnungsgemäß ausgeführt wird, können Sie einfach auf 'Code' klicken und die Anforderung, an der Sie gearbeitet haben, wird in ac # snippet geschrieben. so was:
Aktualisieren
Siehe meine andere SO-Antwort.
Original
quelle
Stream
Objekt,newStream
auf das verwiesen wird , direkt auf den Text der Anfrage. Der Zugriff erfolgt über den Anruf anHttpWReq.GetRequestStream()
. Es ist nicht erforderlich, etwas anderes für die Anforderung festzulegen.Die Antworten in diesem Thema sind alle großartig. Ich möchte jedoch einen anderen vorschlagen. Höchstwahrscheinlich haben Sie eine API erhalten und möchten diese in Ihr c # -Projekt aufnehmen. Mit Postman können Sie den API-Aufruf dort einrichten und testen. Sobald er ordnungsgemäß ausgeführt wird, können Sie einfach auf 'Code' klicken und die Anforderung, an der Sie gearbeitet haben, wird in ac # snippet geschrieben. so was:
Der obige Code hängt vom Nuget-Paket RestSharp ab, das Sie einfach installieren können.
quelle