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;
}
Các PostAsync
tham số khác cần phải được HttpContent
.
Làm thế nào để tôi thiết lập một HttpContent
? Không có tài liệu nào hoạt động cho Windows Phone 8.
Nếu tôi làm GetAsync
, nó hoạt động rất tốt! nhưng nó cần phải được POST với nội dung của key = "bla", Something = "yay"
//BIÊN TẬP
Cảm ơn rất nhiều vì câu trả lời ... Điều này hoạt động tốt, nhưng vẫn còn một vài điều không chắc chắn ở đâ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 = cái gì đó" tôi giả sử sẽ nhận về phía api dưới dạng "bài kiểm tra" dữ liệu, rõ ràng là không. Trong một vấn đề khác, tôi có thể cần phải đăng toàn bộ đối tượng / mảng thông qua dữ liệu bài đăng, vì vậy tôi cho rằng json sẽ là tốt nhất để làm như vậy. Bất kỳ suy nghĩ về cách tôi có được dữ liệu bài qua?
Có lẽ một 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