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);
Dari salah satu kode saya sendiri:
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;}
Hai Torbjorn, saya menggunakan permintaan tersebut sehingga saya bisa mendapatkan 'request.GetResponse ();', dalam contoh di atas bagaimana cara kerjanya?
William Calleja
Ketika Anda memanggil GetRequestStream () itu membuat panggilan ke server. Jadi, Anda harus menambahkannya di akhir contoh di atas.
Torbjörn Hansson
1
Apakah ada cara untuk melihat teks lengkap di dalam objek request untuk tujuan debugging? Saya mencoba membuat serial dan mencoba menggunakan StreamReader, tetapi apa pun yang saya lakukan, saya tidak dapat melihat data yang baru saja saya tulis untuk permintaan tersebut.
Yakobus
Fan-freaking-tastic!
@ James, Anda harus dapat menggunakan fiddler atau wireshark untuk melihat permintaan lengkap dengan tubuhnya.
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();
Apakah Anda melewatkan sesuatu? Seperti httpWReq.Content = newStream; Anda tidak menggunakan objek newStream dengan webRequest Anda.
Yogurtu
4
Untuk menjawab pertanyaan @ Yogurtu tentang kelengkapan, Streamobjek yang newStreammengarah ke menulis langsung ke isi permintaan. Itu diakses oleh panggilan ke HttpWReq.GetRequestStream(). Tidak perlu mengatur apa pun berdasarkan permintaan.
MojoFilter
0
Jawaban dalam topik ini semuanya bagus. Namun saya ingin mengusulkan yang lain. Kemungkinan besar Anda telah diberi api dan menginginkannya ke dalam proyek c # Anda. Menggunakan Postman, Anda dapat mengatur dan menguji panggilan api di sana dan setelah itu berjalan dengan benar, Anda cukup mengklik 'Kode' dan permintaan yang telah Anda kerjakan, ditulis ke ac # snippet. seperti ini:
Memperbarui
Lihat jawaban SO saya yang lain.
Asli
sumber
Stream
objek yangnewStream
mengarah ke menulis langsung ke isi permintaan. Itu diakses oleh panggilan keHttpWReq.GetRequestStream()
. Tidak perlu mengatur apa pun berdasarkan permintaan.Jawaban dalam topik ini semuanya bagus. Namun saya ingin mengusulkan yang lain. Kemungkinan besar Anda telah diberi api dan menginginkannya ke dalam proyek c # Anda. Menggunakan Postman, Anda dapat mengatur dan menguji panggilan api di sana dan setelah itu berjalan dengan benar, Anda cukup mengklik 'Kode' dan permintaan yang telah Anda kerjakan, ditulis ke ac # snippet. seperti ini:
Kode di atas bergantung pada paket nuget RestSharp, yang dapat Anda instal dengan mudah.
sumber