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;
}
El PostAsynctoma otro parámetro que debe ser HttpContent.
¿Cómo configuro un HttpContent? No hay documentación en ningún lugar que funcione para Windows Phone 8.
Si lo hago GetAsync, ¡funciona muy bien! pero debe ser POST con el contenido de key = "bla", something = "yay"
//EDITAR
Muchas gracias por la respuesta ... Esto funciona bien, pero todavía algunas dudas aquí:
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;
}
Supuse que la "prueba = algo" de datos se recogería en el lado de la API como "prueba" de datos posteriores, evidentemente no. En otro asunto, es posible que necesite publicar objetos / matrices completos a través de datos de publicación, por lo que supongo que json será lo mejor. ¿Alguna idea sobre cómo obtengo los datos de publicación?
Quizás algo como:
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
