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);
Из одного из моих собственных кодов:
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;}
Привет, Торбьорн, я использую запрос, чтобы получить 'request.GetResponse ();' в приведенном выше примере, как это будет работать?
William Calleja
Когда вы вызываете GetRequestStream (), он обращается к серверу. Итак, вам придется добавить это в конец приведенного выше примера.
Торбьорн Ханссон
1
Есть ли способ увидеть полный текст внутри объекта запроса в целях отладки? Я попытался сериализовать его и попытался использовать StreamReader, но, что бы я ни делал, я не вижу данных, которые я только что написал в запрос.
Джеймс
Фан-долбанные-тэстик!
@James, у вас должна быть возможность использовать скрипач или wirehark, чтобы увидеть полный запрос с его телом.
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();
Вы что-то упускаете? Как httpWReq.Content = newStream; вы не используете свой объект newStream с вашим webRequest.
Йогурту 02
4
Чтобы ответить на вопрос @Yogurtu для полноты, Streamобъект, на который newStreamуказывает, записывается непосредственно в тело запроса. Доступ к нему осуществляется по вызову HttpWReq.GetRequestStream(). Больше ничего настраивать по запросу не нужно.
MojoFilter
0
Все ответы в этой теме прекрасны. Однако я хотел бы предложить еще один. Скорее всего, вам был предоставлен api, и вы хотите, чтобы он был включен в ваш проект C #. Используя Postman, вы можете настроить и протестировать вызов api там, и как только он заработает правильно, вы можете просто щелкнуть «Код», и запрос, над которым вы работали, записывается во фрагмент кода c #. как это:
Обновить
Смотрите мой другой ТАК ответ.
оригинал
источник
Stream
объект, на которыйnewStream
указывает, записывается непосредственно в тело запроса. Доступ к нему осуществляется по вызовуHttpWReq.GetRequestStream()
. Больше ничего настраивать по запросу не нужно.Все ответы в этой теме прекрасны. Однако я хотел бы предложить еще один. Скорее всего, вам был предоставлен api, и вы хотите, чтобы он был включен в ваш проект C #. Используя Postman, вы можете настроить и протестировать вызов api там, и как только он заработает правильно, вы можете просто щелкнуть «Код», и запрос, над которым вы работали, записывается во фрагмент кода c #. как это:
Приведенный выше код зависит от пакета Nuget RestSharp, который вы можете легко установить.
источник