একটি ওয়েবআরকোয়েস্টের বডি ডেটা সেট করা


120

আমি এএসপি.নেটে একটি ওয়েব অনুরোধ তৈরি করছি এবং আমার শরীরে একগুচ্ছ ডেটা যুক্ত করা দরকার। আমি কেমন করে ঐটি করি?

var request = HttpWebRequest.Create(targetURL);
request.Method = "PUT";
response = (HttpWebResponse)request.GetResponse();

উত্তর:


105

সঙ্গে HttpWebRequest.GetRequestStream

Http://msdn.microsoft.com/en-us/library/d4cek6cc.aspx থেকে কোড উদাহরণ

string postData = "firstone=" + inputData;
ASCIIEncoding encoding = new ASCIIEncoding ();
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, new XmlWriterSettings() { Indent = true, NewLineHandling = NewLineHandling.Entitize, }))
{
    cmisAtomEntry.WriteXml(xmlWriter);
}

try 
{    
    return (HttpWebResponse)request.GetResponse();  
}
catch (WebException wex)
{
    var httpResponse = wex.Response as HttpWebResponse;
    if (httpResponse != null)
    {
        throw new ApplicationException(string.Format(
            "Remote server call {0} {1} resulted in a http error {2} {3}.",
            method,
            uri,
            httpResponse.StatusCode,
            httpResponse.StatusDescription), wex);
    }
    else
    {
        throw new ApplicationException(string.Format(
            "Remote server call {0} {1} resulted in an error.",
            method,
            uri), wex);
    }
}
catch (Exception)
{
    throw;
}

হাই টর্বজর্ন, আমি অনুরোধটি ব্যবহার করছি যাতে আমি 'অনুরোধ.গেটরেস্পোনস ();' পেতে পারি, উপরের উদাহরণে কীভাবে এটি কাজ করবে?
উইলিয়াম কালেজা

আপনি যখন getRequestStream () কল করেন তখন এটি সার্ভারে কল করে। সুতরাং, আপনি এটি উপরের উদাহরণের শেষে যুক্ত করতে হবে।
Torbjörn Hansson

1
ডিবাগিংয়ের উদ্দেশ্যে একটি অনুরোধ অবজেক্টের ভিতরে সম্পূর্ণ পাঠ্য দেখার কোনও উপায় আছে কি? আমি এটি সিরিয়ালাইজ করার চেষ্টা করেছি এবং স্ট্রিমরিডার ব্যবহার করার চেষ্টা করেছি, তবে আমি যাই করুক না কেন আমি কেবল অনুরোধে যে ডেটা লিখেছি তা দেখতে পাচ্ছি না।
জেমস

ফ্যান-freaking ফাঁস করে বেড়াচ্ছে!

@ জেমস, আপনার শরীরের সাথে সম্পূর্ণ অনুরোধটি দেখতে আপনার ফিডলার বা ওয়্যারশার্ক ব্যবহার করতে সক্ষম হওয়া উচিত।
রায়লাভলেস

48

হালনাগাদ

আমার অন্যান্য এসও উত্তর দেখুন।


মূল

var request = (HttpWebRequest)WebRequest.Create("https://example.com/endpoint");

string stringData = ""; // place body here
var 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 এর মত = নতুন ধারা; আপনি আপনার ওয়েব-অনুসন্ধানের সাথে আপনার নতুন স্ট্রিম অবজেক্টটি ব্যবহার করছেন না।
দইগার্টু

3
সম্পূর্ণরূপে @ যোগুর্তুর প্রশ্নের উত্তর দেওয়ার জন্য, অনুরোধের শুরুর দিকে সরাসরি লেখার জন্য নির্দেশ করা Streamবস্তু newStreampoints এটি কল করার মাধ্যমে অ্যাক্সেস করা হয় HttpWReq.GetRequestStream()। অনুরোধে আর কিছু সেট করার দরকার নেই।
মোজো ফিল্টার

0

এই বিষয়ের উত্তরগুলি দুর্দান্ত। তবে আমি অন্য একটি প্রস্তাব করতে চাই। সম্ভবত আপনাকে একটি এপিআই দেওয়া হয়েছে এবং এটি আপনার সি # প্রকল্পে চান। পোস্টম্যান ব্যবহার করে আপনি এপিআই কলটি সেটআপ করতে এবং সেখানে পরীক্ষা করতে পারবেন এবং একবার এটি সঠিকভাবে চালিত হলে, আপনি কেবল 'কোড' ক্লিক করতে পারেন এবং আপনি যে অনুরোধটি নিয়ে কাজ করছেন তা এসি-স্নিপেটে লেখা হয়। এটার মত:

var client = new RestClient("https://api.XXXXX.nl/oauth/token");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Basic   N2I1YTM4************************************jI0YzJhNDg=");
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddParameter("grant_type", "password");
request.AddParameter("username", "development+XXXXXXXX-admin@XXXXXXX.XXXX");
request.AddParameter("password", "XXXXXXXXXXXXX");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);

উপরের কোডটি নুগেট প্যাকেজ রেস্টস্টের্পের উপর নির্ভর করে, যা আপনি সহজেই ইনস্টল করতে পারেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.