public static async Task<string> GetData(string url, string data)
{
UriBuilder fullUri = new UriBuilder(url);
if (!string.IsNullOrEmpty(data))
fullUri.Query = data;
HttpClient client = new HttpClient();
HttpResponseMessage response = await client.PostAsync(new Uri(url), /*expects HttpContent*/);
response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
return responseBody;
}
PostAsync
lấy một thông số khác cần phải là HttpContent
.Làm cách nào để thiết lập HttpContent cho tham số thứ hai HttpClient PostAsync của tôi?
Làm cách nào để thiết lập một số HttpContent
? Không có tài liệu nào ở bất cứ nơi nào hoạt động cho Windows Phone 8.
Nếu tôi làm GetAsync
, nó hoạt động tuyệt vời! nhưng nó cần phải được POST với nội dung của key = "bla", một cái gì đó = "yay"
// EDIT
Cảm ơn rất nhiều cho câu trả lời ... này hoạt động tốt, nhưng vẫn còn một vài trường hợp không chắc chắn tại đây:
public static async Task<string> GetData(string url, string data)
{
data = "test=something";
HttpClient client = new HttpClient();
StringContent queryString = new StringContent(data);
HttpResponseMessage response = await client.PostAsync(new Uri(url), queryString);
//response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
return responseBody;
}
Dữ liệu "test = something" Tôi giả định sẽ nhận phía api dưới dạng dữ liệu bài "", rõ ràng là không. Trên một vấn đề khác, tôi có thể cần phải đăng toàn bộ các đối tượng/mảng thông qua dữ liệu bài, vì vậy tôi giả sử json sẽ là tốt nhất để làm như vậy. Bất kỳ suy nghĩ về cách tôi nhận được dữ liệu bài qua?
Có lẽ cái gì đó như:
class SomeSubData
{
public string line1 { get; set; }
public string line2 { get; set; }
}
class PostData
{
public string test { get; set; }
public SomeSubData lines { get; set; }
}
PostData data = new PostData {
test = "something",
lines = new SomeSubData {
line1 = "a line",
line2 = "a second line"
}
}
StringContent queryString = new StringContent(data); // But obviously that won't work
Tôi sẽ kiểm tra điều này. Tôi nghĩ rằng khi tôi tìm thấy điều này, tôi sẽ phải đặt điều này ở đâu đó mà mọi người đều có thể nhìn thấy nó! Điều này đã cho tôi đi trong 4 ngày nay, cố gắng để có được một REST đơn giản cho một API. – Jimmyt1988
StringContent hoạt động rất tốt, nhưng trên thực tế, không thể nhận được PostData để truy cập vào trang web mà tôi đang gọi ngay bây giờ: D. Tôi sẽ chỉnh sửa câu hỏi để hiển thị cho bạn những gì tôi hiện đang có – Jimmyt1988
Câu trả lời nhanh cho "làm cách nào để tôi đăng một lớp reprsentation JSON của lớp của tôi" là "serialize đối tượng vào JSON, có thể với JSON.Net", nhưng điều đó thực sự thuộc về một câu hỏi riêng. –