У меня есть следующий веб-сервис в php
function w_getLesVisites($idVisiteur) { return json_encode($pdo->getLesVisiteur($idVisiteur)); }
В моем проекте PCL для Xamarin у меня есть следующий класс RestService, целью которого является потребление сервиса phpwebservice и извлечение данных из моей локальной базы данных MySQL
public class RestService { HttpClient client; public List<Visite> L_Visites { get; private set; } public RestService() { client = new HttpClient(); client.MaxResponseContentBufferSize = 25600; } public async Task<List<Visite>> RefreshDataAsync() { string restUrl = "localhost/ppe3JoJuAd/gsbAppliFraisV2/w_visite"; var uri = new Uri(string.Format(restUrl, string.Empty)); try { var response = await client.GetAsync(uri); if(response.IsSuccessStatusCode) { var content = await response.Content.ReadAsStringAsync(); L_Visites = JsonConvert.DeserializeObject<List<Visite>>(content); } } catch (Exception ex) { Debug.WriteLine(@"ERROR {0}", ex.Message); } return L_Visites; } }
Мой вопрос: как я могу вызвать php webservice с идентификатором, чтобы он возвращал значение json, как ожидалось?
Чтобы получить один элемент из веб-службы, просто создайте другой метод, как показано ниже:
public async Task<Visite> GetSingleDataAsync(int id) { //append the id to your url string string restUrl = "localhost/ppe3JoJuAd/gsbAppliFraisV2/w_visite/" + id; var uri = new Uri(string.Format(restUrl, string.Empty)); //create new instance of your Visite object var data = new Visite(); try { var response = await client.GetAsync(uri); if(response.IsSuccessStatusCode) { var content = await response.Content.ReadAsStringAsync(); data = JsonConvert.DeserializeObject<Visite>(content); //do not use list here } } catch (Exception ex) { Debug.WriteLine(@"ERROR {0}", ex.Message); } return data; }
Как пояснил @Jason, ваш формат url может зависеть от того, как ваш сервис будет реализован. Но приведенный выше код будет работать до тех пор, пока ваш URL будет правильным.