এইচটিপিপি শিরোনাম এইচটিটিপিপ্লাইয়েন্টে যুক্ত করা হচ্ছে


158

সমস্ত:

কোনও ওয়েব পরিষেবায় একটি অনুরোধ প্রেরণের আগে আমাকে এইচটিপিপি্লায়েন্টে এইচটিপি শিরোনাম যুক্ত করতে হবে। আমি কীভাবে এটি একটি পৃথক অনুরোধের জন্য করতে পারি (ভবিষ্যতের সমস্ত অনুরোধের HttpClient এর বিপরীতে)? আমি নিশ্চিত না এটি এমনকি সম্ভব কিনা।

var client = new HttpClient();
var task =
    client.GetAsync("http://www.someURI.com")
    .ContinueWith((taskwithmsg) =>
    {
        var response = taskwithmsg.Result;

        var jsonTask = response.Content.ReadAsAsync<JsonObject>();
        jsonTask.Wait();
        var jsonObject = jsonTask.Result;
    });
task.Wait();

উত্তর:


245

একটি তৈরি করুন HttpRequestMessage, এতে পদ্ধতিটি GETসেট করুন, আপনার শিরোনামগুলি সেট করুন এবং তার SendAsyncপরিবর্তে ব্যবহার করুন GetAsync

var client = new HttpClient();
var request = new HttpRequestMessage() {
    RequestUri = new Uri("http://www.someURI.com"),
    Method = HttpMethod.Get,
};
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("text/plain"));
var task = client.SendAsync(request)
    .ContinueWith((taskwithmsg) =>
    {
        var response = taskwithmsg.Result;

        var jsonTask = response.Content.ReadAsAsync<JsonObject>();
        jsonTask.Wait();
        var jsonObject = jsonTask.Result;
    });
task.Wait();

2
ধন্যবাদ, ড্যারেল! HttpClientআপনি যতক্ষণ না দেখতে পেলেন আমি হতাশ ছিলাম।
স্যাম

23
@ ট্যালন এর অর্থ 406। ক্লায়েন্ট একটি মিডিয়া টাইপ চেয়েছিল যা সার্ভার সমর্থন করে না। আপনি কী মিডিয়া টাইপ করবেন তা যদি যত্ন না করেন তবে তার জন্য জিজ্ঞাসা করবেন না। ওপি সহজভাবে জিজ্ঞাসা করছিল কীভাবে একটি অনুরোধে শিরোনাম যুক্ত করা যায়। আমি কেবল একটি এলোমেলো উদাহরণ বেছে নিয়েছি।
ড্যারেল মিলার

15
আজকাল আপনি সম্ভবত এর var response = await client.SendAsyncপরিবর্তে চান ContinueWithএবংtask.Wait()
মাইকেল পার্কার

1
পছন্দ করেছেন
ড্যারেল মিলার

1
সেরা পারফরম্যান্সের জন্য দয়া করে নোট করুন, আপনার এই জাতীয় কোনও HTTP ক্লায়েন্ট ইনস্ট্যান্ট করা উচিত নয়। আপনি এখানে এই বিষয়ে আরও পড়তে পারেন stackoverflow.com/a/15708633/1406930
ScottBurfieldMills

16

যখন সমস্ত অনুরোধগুলির জন্য এটি একই শিরোনাম হতে পারে বা প্রতিটি অনুরোধের পরে আপনি ক্লায়েন্টকে নিষ্পত্তি করতে পারেন তবে আপনি DefaultRequestHeaders.Addবিকল্পটি ব্যবহার করতে পারেন :

client.DefaultRequestHeaders.Add("apikey","xxxxxxxxx");      

3
আমি বিশ্বাস করি যে এটি এইচটিটিপি ক্লায়েন্টের প্রেরিত সমস্ত বার্তায় শিরোনাম যুক্ত করে। এটি ওপি-র মতবিরোধী : "স্বতন্ত্র অনুরোধের জন্য আমি কীভাবে এটি করতে পারি (ভবিষ্যতের সমস্ত অনুরোধের বিরুদ্ধে এইচটিপিপিপ্লায়েন্টের বিপরীতে)?" HttpClient দৃষ্টান্তগুলি একবার তৈরি এবং বহুবার ব্যবহারের জন্য ডিজাইন করা হয়েছে।
Flydog57

একটি অনুরোধে কাস্টম শিরোনাম সেট করতে, HTTP সার্ভারে প্রেরণের জন্য httpclient এ যাওয়ার আগে কাস্টম শিরোনামের সাথে একটি অনুরোধ তৈরি করুন। ডিফল্ট শিরোনামটি সার্ভারে প্রতিটি অনুরোধ প্রেরণের জন্য httpclient এ সেট করা আছে।
জিম্বা

0

একটি অনুরোধে কাস্টম শিরোনাম সেট করতে, HTTP সার্ভারে প্রেরণের জন্য httpclient এ যাওয়ার আগে কাস্টম শিরোনামের সাথে একটি অনুরোধ তৈরি করুন। উদাহরণ:

HttpClient client = HttpClients.custom().build();
HttpUriRequest request = RequestBuilder.get()
  .setUri(someURL)
  .setHeader(HttpHeaders.CONTENT_TYPE, "application/json")
  .build();
client.execute(request);

ডিফল্ট শিরোনামটি সার্ভারে প্রতিটি অনুরোধ প্রেরণের জন্য HTTPCLIET এ সেট করা হয়।

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