সি # তে ওয়েবক্লিয়েন্টের মাধ্যমে URL এ JSON পোস্ট করা


89

আমার কাছে কিছু জাভাস্ক্রিপ্ট কোড রয়েছে যা আমার সি # তে রূপান্তর করতে হবে। আমার জাভাস্ক্রিপ্ট কোডটি তৈরি করা হয়েছে এমন একটি ওয়েব পরিষেবাতে কিছু জেএসওএন পোস্ট করেছে। এই জাভাস্ক্রিপ্ট কোডটি সূক্ষ্মভাবে কাজ করে এবং নিম্নলিখিতগুলির মতো দেখায়:

var vm = { k: "1", a: "2", c: "3", v: "4" };
$.ajax({
  url: "http://www.mysite.com/1.0/service/action",
  type: "POST",
  data: JSON.stringify(vm),
  contentType: "application/json;charset=utf-8",
  success: action_Succeeded,
  error: action_Failed
});

function action_Succeeded(r) {
  console.log(r);
}

function log_Failed(r1, r2, r3) {
  alert("fail");
}

আমি কীভাবে এটি সি # তে রূপান্তর করব তা বোঝার চেষ্টা করছি। আমার অ্যাপ্লিকেশন .NET 2.0 ব্যবহার করছে। আমি যা বলতে পারি, সেগুলি থেকে আমাকে নিম্নলিখিতগুলির মতো কিছু করতে হবে:

using (WebClient client = new WebClient())
{
  string json = "?";
  client.UploadString("http://www.mysite.com/1.0/service/action", json);
}

আমি এই সময়ে একটু আটকে আছি। আমি jsonদেখতে কেমন হবে তা নিশ্চিত নই । আমি কনটেন্টের ধরণ সেট করতে হবে কিনা তা নিশ্চিত নই। আমি যদি করি তবে আমি কীভাবে এটি করব তা নিশ্চিত নই। আমিও দেখেছি UploadData। সুতরাং, আমি নিশ্চিত না যে আমি এমনকি সঠিক পদ্ধতিটি ব্যবহার করছি কিনা। এক অর্থে, আমার ডেটা সিরিয়ালাইজেশন আমার সমস্যা।

কেউ কি আমাকে বলতে পারে আমি এখানে কী মিস করছি?

ধন্যবাদ!

উত্তর:


72

আপনার সামগ্রীটি বিশ্লেষণের জন্য আপনার একটি জসন সিরিয়ালাইজার দরকার, একটি অনুরোধ কীভাবে করবেন তা সম্পর্কে আপনার প্রাথমিক প্রশ্নের জন্য সম্ভবত এটি ইতিমধ্যে আপনার কাছে রয়েছে, এটি একটি ধারণা হতে পারে:

var baseAddress = "http://www.example.com/1.0/service/action";

var http = (HttpWebRequest)WebRequest.Create(new Uri(baseAddress));
http.Accept = "application/json";
http.ContentType = "application/json";
http.Method = "POST";

string parsedContent = <<PUT HERE YOUR JSON PARSED CONTENT>>;
ASCIIEncoding encoding = new ASCIIEncoding();
Byte[] bytes = encoding.GetBytes(parsedContent);

Stream newStream = http.GetRequestStream();
newStream.Write(bytes, 0, bytes.Length);
newStream.Close();

var response = http.GetResponse();

var stream = response.GetResponseStream();
var sr = new StreamReader(stream);
var content = sr.ReadToEnd();

আশা করি এটা সাহায্য করবে,


4
"পার্সড কনটেন্ট" দেখতে কেমন হবে? দুর্ভাগ্যক্রমে, এই দৃশ্যে আমার নিজের JSON ম্যানুয়ালি তৈরি করা দরকার। ধন্যবাদ.
ইয়েল ফ্যান

এটি কি ঠিক JSON এর মতো দেখতে পাওয়া যাবে? বা আমার কি এক ধরণের বিশেষ এনকোডিং করা দরকার যা আমি পেয়ে যাচ্ছি।
ইয়েল ফ্যান

@ ইয়েলফ্যান সাধারণত কোনও জেএসএন পার্সার বেছে নিতে সমস্যা হয় না, আপনি সর্বদা জেএসএন. নেটকে জেএসএন-তে পার্স করার জন্য নেট করতে পারেন, তবে আমার অভিজ্ঞতায় কিছু মেঘ পরিষেবা ছিল যা আলাদা জেএসওন পার্সার সংস্করণ ছিল এবং আমাকে কিছু করতে হয়েছিল টুইটগুলি। , এই আলোচনা সাহায্য করতে পারে কি দৃশ্যকল্প জন্য সবচেয়ে ভাল হয় আপনি খুব ছাড়া কিছু বিষয় দেখতে JSON.Net stackoverflow.com/questions/9573119/...
হোর্হে আলভারাডো

4
আপনি কেন ইউএসএফ 8 নয়, এএসসিআইআইএনকোডিং ব্যবহার করবেন? স্ট্যাকওভারফ্লো . com/a/9254967/109392 দেখুন ।
অবাক

4
+1 আমি প্রথমে ওপি ব্যবহার করে অনুরূপ চেষ্টা করেছি WebClientএবং এটি কাজ করতে পাইনি। তারপরে আমি এই একাকীকরণ চেষ্টা করেছিলাম, এবং এটি একটি কবজির মতো কাজ করে। আমি বাইট অ্যারে তৈরি করার UTF8Encodingপরিবর্তে ব্যবহার করছিলাম ASCIIEncoding, কারণ আমি ASCII ব্যবহার করার কোনও কারণ দেখতে পাচ্ছি না, যা উপলব্ধ অক্ষরগুলিকে এমনভাবে হ্রাস করে যা অগ্রহণযোগ্য। এএসসিআইআইয়ের চরসেটে কেবল 127 টি অক্ষর রয়েছে।
বিস্মিত

197

প্রশ্নের ইতিমধ্যে উত্তর দেওয়া হয়েছে তবে আমি মনে করি যে আমি সমাধানটি সহজ এবং প্রশ্ন শিরোনামের সাথে আরও প্রাসঙ্গিক খুঁজে পেয়েছি, এটি এখানে:

var cli = new WebClient();
cli.Headers[HttpRequestHeader.ContentType] = "application/json";
string response = cli.UploadString("http://some/address", "{some:\"json data\"}");

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


4
এবং, আপনার জসনকে "পঠনযোগ্য" করতে: (vb.net তে) ডিম জসন = <JSON> field "ফিল্ড 1": "মান 1", "স্থিতি": "মুলতুবি", "অবজেক্ট": {"ফিল্ড 2": সত্য} } </JSON>। টুস্ট্রিং
ফক্সনথেরক

কিন্তু কী যে জসন স্ট্রিং মধ্যে inerpolating পরামিতি?
তালি বি।

74

নিম্নলিখিত উদাহরণটি ওয়েবক্লিয়েন্টের মাধ্যমে কীভাবে JSON পোস্ট করতে হবে তা দেখায় pআপলোড স্ট্রিং পদ্ধতি :

var vm = new { k = "1", a = "2", c = "3", v=  "4" };
using (var client = new WebClient())
{
   var dataString = JsonConvert.SerializeObject(vm);
   client.Headers.Add(HttpRequestHeader.ContentType, "application/json");
   client.UploadString(new Uri("http://www.contoso.com/1.0/service/action"), "POST", dataString);
}

পূর্বশর্ত: জসন.এনইটি লাইব্রেরি


4
আমার মনে হয় আপনি যদি সম্পন্ন ইভেন্টটি ব্যবহার করেন তবে তা আপলোড স্ট্রিংএসিঙ্ক হওয়া উচিত।
স্যাম ম্যাক্রিল 22'15 '

আপনি এই POSTযুক্তিটি বাদ দিতে পারেন কারণ UploadStringএই পদ্ধতিটি স্পষ্টভাবে ডিফল্ট হিসাবে ব্যবহার করে। এছাড়াও আপনি client.Headers.Add(HttpRequestHeader.Accept, "application/json");যদি প্রত্যাশা JSONহিসাবে প্রত্যাশা করেন তবে আপনি যুক্ত করতে চাইতে পারেন।
জিমসুন

ওয়েবক্লিয়েন্ট আসলে আইডিজিপোজেবল বাস্তবায়ন করে? আমি কয়েক বছর পরে .NET ফ্রেমওয়ার্কে কাজ করছি এবং আমি এটি দেখতে পাচ্ছি না।
বুবলিং

4
@ বুবলিং আমি ওয়েবক্লিয়েন্টে এফ 12 ক্লিক করেছি এবং দেখতে পাচ্ছি এটি একটি উপাদান এবং উপাদানটি আইডিজিপোজেবল প্রয়োগ করেpublic class WebClient : Component public class Component : MarshalByRefObject, IComponent, IDisposable
লার্স পার্সসন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.