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);
À partir d'un de mes propres 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;}
Salut Torbjorn, j'utilise la requête pour pouvoir obtenir le 'request.GetResponse ();', dans l'exemple ci-dessus comment cela fonctionnerait-il?
William Calleja
Lorsque vous appelez GetRequestStream (), il effectue l'appel au serveur. Vous devrez donc ajouter cela à la fin de l'exemple ci-dessus.
Torbjörn Hansson
1
Existe-t-il un moyen de voir le texte intégral à l'intérieur d'un objet de requête à des fins de débogage? J'ai essayé de le sérialiser et j'ai essayé d'utiliser un StreamReader, mais quoi que je fasse, je ne peux pas voir les données que je viens d'écrire à la demande.
James
Fan-freaking-tastic!
@James, vous devriez pouvoir utiliser Fiddler ou WireShark pour voir la requête complète avec son corps.
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();
Vous manquez quelque chose? Comme un httpWReq.Content = newStream; vous n'utilisez pas votre objet newStream avec votre webRequest.
Yogurtu
4
Pour répondre à la question d'exhaustivité de @ Yogurtu, l' Streamobjet qui newStreampointe vers écrit directement dans le corps de la requête. Il est accessible par l'appel à HttpWReq.GetRequestStream(). Il n'est pas nécessaire de définir quoi que ce soit d'autre sur la demande.
MojoFilter
0
Les réponses à ce sujet sont toutes excellentes. Cependant j'aimerais en proposer un autre. Il est fort probable que vous ayez reçu une API et que vous le souhaitiez dans votre projet c #. En utilisant Postman, vous pouvez y installer et tester l'appel d'API et une fois qu'il s'exécute correctement, vous pouvez simplement cliquer sur «Code» et la requête sur laquelle vous avez travaillé est écrite dans l'extrait de code ac #. comme ça:
Mettre à jour
Voir mon autre réponse SO.
Original
la source
Stream
objet quinewStream
pointe vers écrit directement dans le corps de la requête. Il est accessible par l'appel àHttpWReq.GetRequestStream()
. Il n'est pas nécessaire de définir quoi que ce soit d'autre sur la demande.Les réponses à ce sujet sont toutes excellentes. Cependant j'aimerais en proposer un autre. Il est fort probable que vous ayez reçu une API et que vous le souhaitiez dans votre projet c #. En utilisant Postman, vous pouvez y installer et tester l'appel d'API et une fois qu'il s'exécute correctement, vous pouvez simplement cliquer sur «Code» et la requête sur laquelle vous avez travaillé est écrite dans l'extrait de code ac #. comme ça:
Le code ci-dessus dépend du package nuget RestSharp, que vous pouvez facilement installer.
la source