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 um de meu próprio 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;}
Olá, Torbjorn, estou usando a solicitação para obter o 'request.GetResponse ();', no exemplo acima, como isso funcionaria?
William Calleja
Quando você chama GetRequestStream (), ele faz a chamada para o servidor. Então, você teria que adicionar isso ao final do exemplo acima.
Torbjörn Hansson
1
Existe uma maneira de ver o texto completo dentro de um objeto de solicitação para fins de depuração? Tentei serializá-lo e tentei usar um StreamReader, mas não importa o que eu faça, não consigo ver os dados que acabei de escrever na solicitação.
James
Fantástico!
@James, você deve ser capaz de usar o fiddler ou arameshark para ver a solicitação completa com seu corpo.
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();
Você está perdendo alguma coisa? Como um httpWReq.Content = newStream; você não está usando seu objeto newStream com seu webRequest.
Yogurtu
4
Para responder à pergunta de @Yogurtu quanto à integridade, o Streamobjeto que newStreamaponta é escrito diretamente no corpo da solicitação. Ele é acessado pela chamada para HttpWReq.GetRequestStream(). Não há necessidade de definir mais nada na solicitação.
MojoFilter
0
As respostas neste tópico são excelentes. No entanto, gostaria de propor outro. Provavelmente, você recebeu uma API e quer isso em seu projeto c #. Usando o Postman, você pode configurar e testar a chamada de api lá e, uma vez que ela seja executada corretamente, você pode simplesmente clicar em 'Código' e a solicitação na qual você está trabalhando é gravada em um snippet c #. como isso:
Atualizar
Veja minha outra resposta SO.
Original
fonte
Stream
objeto quenewStream
aponta é escrito diretamente no corpo da solicitação. Ele é acessado pela chamada paraHttpWReq.GetRequestStream()
. Não há necessidade de definir mais nada na solicitação.As respostas neste tópico são excelentes. No entanto, gostaria de propor outro. Provavelmente, você recebeu uma API e quer isso em seu projeto c #. Usando o Postman, você pode configurar e testar a chamada de api lá e, uma vez que ela seja executada corretamente, você pode simplesmente clicar em 'Código' e a solicitação na qual você está trabalhando é gravada em um snippet c #. como isso:
O código acima depende do pacote nuget RestSharp, que você pode instalar facilmente.
fonte