.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.