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
Stream
objeto quenewStream
apunta 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