Đây là lần đầu tiên của tôi bao giờ sử dụng JSON cũng như System.Net
và WebRequest
trong bất kỳ ứng dụng của tôi. Ứng dụng của tôi phải gửi một tải trọng JSON, tương tự như ứng dụng bên dưới đến máy chủ xác thực:
{
"agent": {
"name": "Agent Name",
"version": 1
},
"username": "Username",
"password": "User Password",
"token": "xxxxxx"
}
Để tạo tải trọng này, tôi đã sử dụng JSON.NET
thư viện. Làm cách nào để gửi dữ liệu này đến máy chủ xác thực và nhận lại phản hồi JSON của nó? Đây là những gì tôi đã thấy trong một số ví dụ, nhưng không có nội dung JSON:
var http = (HttpWebRequest)WebRequest.Create(new Uri(baseUrl));
http.Accept = "application/json";
http.ContentType = "application/json";
http.Method = "POST";
string parsedContent = "Parsed JSON Content needs to go here";
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();
Tuy nhiên, điều này có vẻ như rất nhiều mã được so sánh với việc sử dụng các ngôn ngữ khác mà tôi đã sử dụng trong quá khứ. Tôi đang làm điều này một cách chính xác? Và làm cách nào để lấy lại phản hồi JSON để tôi có thể phân tích cú pháp nó?
Cảm ơn, Elite.
Đã cập nhật mã
// Send the POST Request to the Authentication Server
// Error Here
string json = await Task.Run(() => JsonConvert.SerializeObject(createLoginPayload(usernameTextBox.Text, password)));
var httpContent = new StringContent(json, Encoding.UTF8, "application/json");
using (var httpClient = new HttpClient())
{
// Error here
var httpResponse = await httpClient.PostAsync("URL HERE", httpContent);
if (httpResponse.Content != null)
{
// Error Here
var responseContent = await httpResponse.Content.ReadAsStringAsync();
}
}
WebClient.UploadString(JsonConvert.SerializeObjectobj(yourobj))
hoặcHttpClient.PostAsJsonAsync