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;
}
PostAsyncTrwa kolejny parametr, który musi być HttpContent.
Jak skonfigurować HttpContent? Nigdzie nie ma dokumentacji, która działałaby na Windows Phone 8.
Jeśli tak GetAsync, to działa świetnie! ale musi to być test POST z zawartością key = "bla", coś = "yay"
//EDYTOWAĆ
Dziękuję bardzo za odpowiedź ... To działa dobrze, ale wciąż kilka nie zapewnia:
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;
}
Zakładam, że dane „test = coś” przyjęłyby się po stronie interfejsu API jako „test” danych postu, najwyraźniej nie. W innej sprawie może być konieczne opublikowanie całych obiektów / tablic za pośrednictwem danych przesyłania, więc zakładam, że najlepiej będzie to zrobić w json. Czy są jakieś przemyślenia na temat tego, w jaki sposób mogę uzyskać przesyłanie danych?
Być może coś takiego:
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
