.NET এইচটিপিপিলেট। স্ট্রিংয়ের মান কীভাবে পোস্ট করবেন?


174

আমি সি # এবং এইচটিটিপি ক্লায়েন্টকে নীচের পোস্টের অনুরোধটি ব্যবহার করে কীভাবে তৈরি করতে পারি: ব্যবহারকারী-এজেন্ট: ফিডলার সামগ্রী-প্রকার: অ্যাপ্লিকেশন / x-www-form-urlencoded হোস্ট: লোকালহোস্ট: 6740 সামগ্রী-দৈর্ঘ্য: 6

আমার WEB API পরিষেবাটির জন্য আমার এই জাতীয় অনুরোধ দরকার:

[ActionName("exist")]
[HttpPost]
public bool CheckIfUserExist([FromBody] string login)
{           
    return _membershipProvider.CheckIfExist(login);
}

1
আপনি ছবিতে কোন HTTP ক্লায়েন্ট ব্যবহার করছেন?
— গন্ধক পাথর


1
পরিষেবাটি ওয়েব অপি এমভিসি। অনুরোধের জন্য JSON ফর্ম্যাট ?
— কুইকিনেট

উত্তর:


433
using System;
using System.Collections.Generic;
using System.Net.Http;

class Program
{
    static void Main(string[] args)
    {
        Task.Run(() => MainAsync());
        Console.ReadLine();
    }

    static async Task MainAsync()
    {
        using (var client = new HttpClient())
        {
            client.BaseAddress = new Uri("http://localhost:6740");
            var content = new FormUrlEncodedContent(new[]
            {
                new KeyValuePair<string, string>("", "login")
            });
            var result = await client.PostAsync("/api/Membership/exists", content);
            string resultContent = await result.Content.ReadAsStringAsync();
            Console.WriteLine(resultContent);
        }
    }
}

1
এইচএম, আমার এইচটিটিপি ক্লায়েন্ট এক্সটেনশনগুলির এ জাতীয় ওভারলোড নেই ... আমি ফ্রেমওয়ার্ক ৪.০ ব্যবহার করি
— আইভজেন মার্টিনভ

1
আপনার কোন ওভারলোড নেই? Microsoft.AspNet.WebApi.Clientআপনি আপনার প্রকল্পে নুগেট ইনস্টল করেছেন তা নিশ্চিত করুন । HttpClientবর্গ .NET 4.0 নেই .NET 4.5 সালে নির্মিত হয়। আপনি এটি নেট নেট 4.0.০ এ ব্যবহার করতে চাইলে আপনার নুগেট দরকার!
— দারিন দিমিত্রভ

1
প্রথম সি # এসএসএসসিই আমি জুড়ে এসেছি। আপনি যদি কোনও আইডিই দিয়ে কোনও ভাষা থেকে আগত হন তবে এটি চলার জন্য এটি এমন বাতাসের মতো।
— মহিষ 6

13
শুধু একটি নোট যে বিবৃতি ব্যবহার করে HttpClient ব্যবহার করে একটি হল ভুল
— Ren

26
আপনার স্ট্যাটিক কেবল পঠনযোগ্য HttpClient _client = নতুন HttpClient () করা উচিত; পরিবর্তে aspnetmonsters.com/2016/08/2016-08-27-httpclientwrong
— সমীর

35

নীচে সিঙ্ক্রোনালি কল করার উদাহরণ দেওয়া আছে তবে আপনি অপেক্ষারত-সিঙ্কটি ব্যবহার করে সহজেই অ্যাসিঙ্কে পরিবর্তন করতে পারেন:

var pairs = new List<KeyValuePair<string, string>>
            {
                new KeyValuePair<string, string>("login", "abc")
            };

var content = new FormUrlEncodedContent(pairs);

var client = new HttpClient {BaseAddress = new Uri("http://localhost:6740")};

    // call sync
var response = client.PostAsync("/api/membership/exist", content).Result; 
if (response.IsSuccessStatusCode)
{
}

1
আমি মনে করি না এটি কাজ করবে। আপনার "লগইন" টি খালি স্ট্রিংয়ের সাথে প্রতিস্থাপন করা উচিত, এটি কীভ্যালিউ পেয়ার <স্ট্রিং, স্ট্রিং> ("", "অ্যাবসি") হওয়া উচিত, স্বীকৃত উত্তরটি দেখুন see
— joedotnot

এটি আমার পক্ষে কাজ করে, পিএইচপি ওয়েব সার্ভিসে কাজ করুন যা $ Company_id = $ _POST ("Company_id") কল করছে; সে রকমই. আমি যদি জসন হিসাবে প্রেরণ করি তবে পিএইচপি কাজ করতে পারে না।
— টিপং

8

আপনার প্রশ্নটি সম্পর্কে এসপ নেটওয়ারের ওয়েবসাইটে একটি নিবন্ধ রয়েছে। আমি আশা করি এটি আপনাকে সহায়তা করতে পারে।

এএসপি নেট দিয়ে কীভাবে এপি কল করবেন

http://www.asp.net/web-api/overview/advanced/calling-a-web-api-from-a-net-client

নিবন্ধটির পোস্ট বিভাগের একটি ছোট অংশ এখানে দেওয়া হয়েছে

নিম্নলিখিত কোডটি একটি POST অনুরোধ প্রেরণ করে যা JSON ফর্ম্যাটে একটি পণ্য উদাহরণ রয়েছে:

// HTTP POST
var gizmo = new Product() { Name = "Gizmo", Price = 100, Category = "Widget" };
response = await client.PostAsJsonAsync("api/products", gizmo);
if (response.IsSuccessStatusCode)
{
    // Get the URI of the created resource.
    Uri gizmoUrl = response.Headers.Location;
}

অনুরোধটি
— ফর্ম-urlencoded

এটি ফর্ম-urlencoded । যাইহোক, সম্পত্তিগুলির জন্য JSON ফর্ম্যাটDateTime ? সিরিয়ালের সমস্যা?
— কিকিনেট

4
আমি আপনার পদ্ধতি "PostAsJsonAsync" নজরে আসছি বলে মনে হচ্ছে না এটি আমার এইচটিপিপিপ্লায়েন্টের দৃষ্টান্তে উপলভ্য নয়।
— টমি হলম্যান

4

এখানে আমি এই নিবন্ধে যা ব্যবহার পোস্টে অনুরোধ পাঠাতে হয় পাওয়া JsonConvert.SerializeObject()& StringContent()থেকে HttpClient.PostAsyncডেটা

static async Task Main(string[] args)
{
    var person = new Person();
    person.Name = "John Doe";
    person.Occupation = "gardener";

    var json = Newtonsoft.Json.JsonConvert.SerializeObject(person);
    var data = new System.Net.Http.StringContent(json, Encoding.UTF8, "application/json");

    var url = "https://httpbin.org/post";
    using var client = new HttpClient();

    var response = await client.PostAsync(url, data);

    string result = response.Content.ReadAsStringAsync().Result;
    Console.WriteLine(result);
}

1

আপনি এই মত কিছু করতে পারে

HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://localhost:6740/api/Membership/exist");

req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";         
req.ContentLength = 6;

StreamWriter streamOut = new StreamWriter(req.GetRequestStream(), System.Text.Encoding.ASCII);
streamOut.Write(strRequest);
streamOut.Close();
StreamReader streamIn = new StreamReader(req.GetResponse().GetResponseStream());
string strResponse = streamIn.ReadToEnd();
streamIn.Close();

এবং তারপরে আপনার ওয়েব সার্ভিস দ্বারা ফিরে আসা মানগুলি স্ট্রাইপোনসে থাকা উচিত


25
প্রশ্ন এখানে নতুন ব্যবহার করতে সম্পর্কে ছিল HttpClientএবং পুরানো না WebRequest।
— দারিন দিমিত্রভ

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