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);
De uno de mi propio código:
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;}
Hola Torbjorn, estoy usando la solicitud para poder obtener el 'request.GetResponse ();', en el ejemplo anterior, ¿cómo funcionaría?
William Calleja
Cuando llama a GetRequestStream (), realiza la llamada al servidor. Entonces, tendrías que agregar eso al final del ejemplo anterior.
Torbjörn Hansson
1
¿Hay alguna forma de ver el texto completo dentro de un objeto de solicitud para fines de depuración? Intenté serializarlo e intenté usar un StreamReader, pero no importa lo que haga, no puedo ver los datos que acabo de escribir en la solicitud.
James
Fan-jodidamente-fantástico!
@James, debería poder usar Fiddler o Wireshark para ver la solicitud completa con su cuerpo.
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();
¿Te estás perdiendo algo? Como un httpWReq.Content = newStream; no está utilizando su objeto newStream con su webRequest.
Yogurtu
4
Para responder a la pregunta de @ Yogurtu sobre la integridad, el Streamobjeto que newStreamapunta a escribe directamente en el cuerpo de la solicitud. Se accede mediante la llamada a HttpWReq.GetRequestStream(). No es necesario establecer nada más en la solicitud.
MojoFilter
0
Las respuestas en este tema son geniales. Sin embargo me gustaría proponer otro. Lo más probable es que le hayan dado una api y la desee en su proyecto de c #. Con Postman, puede configurar y probar la llamada a la API allí y, una vez que se ejecute correctamente, simplemente haga clic en 'Código' y la solicitud en la que ha estado trabajando se escribe en ac # snippet. Me gusta esto:
Actualizar
Vea mi otra respuesta SO.
Original
fuente
Streamobjeto quenewStreamapunta a escribe directamente en el cuerpo de la solicitud. Se accede mediante la llamada aHttpWReq.GetRequestStream(). No es necesario establecer nada más en la solicitud.Las respuestas en este tema son geniales. Sin embargo me gustaría proponer otro. Lo más probable es que le hayan dado una api y la desee en su proyecto de c #. Con Postman, puede configurar y probar la llamada a la API allí y, una vez que se ejecute correctamente, simplemente haga clic en 'Código' y la solicitud en la que ha estado trabajando se escribe en ac # snippet. Me gusta esto:
El código anterior depende del paquete nuget RestSharp, que puede instalar fácilmente.
fuente