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;
}
The PostAsyncmengambil parameter lain bahwa kebutuhan untuk menjadi HttpContent.
Bagaimana cara mengatur HttpContent? Tidak ada dokumentasi di mana pun yang berfungsi untuk Windows Phone 8.
Jika saya melakukannya GetAsync, itu akan berhasil! tetapi perlu POST dengan konten key = "bla", something = "yay"
// EDIT
Terima kasih banyak atas jawabannya ... Ini bekerja dengan baik, tetapi masih sedikit yang tidak yakin di sini:
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;
}
Data "test = something" Saya berasumsi akan mengambil sisi api sebagai data post "test", ternyata tidak. Pada masalah lain, saya mungkin perlu memposting seluruh objek / array melalui data posting, jadi saya menganggap json akan lebih baik untuk melakukannya. Adakah pemikiran tentang bagaimana saya mendapatkan data posting?
Mungkin sesuatu seperti:
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
