在Xamarin PCL中使用php Web服务

在Xamarin PCL中使用php Web服务,php,web-services,xamarin.forms,Php,Web Services,Xamarin.forms,我有以下php中的Web服务 function w_getLesVisites($idVisiteur) { return json_encode($pdo->getLesVisiteur($idVisiteur)); } 在我的Xamarin form PCL项目中,我有以下RestService类,其目的是使用phpwebservice并从MySQL本地数据库检索数据 public class RestService { HttpClient clie

我有以下php中的Web服务

function w_getLesVisites($idVisiteur)
{
    return json_encode($pdo->getLesVisiteur($idVisiteur));
}
在我的Xamarin form PCL项目中,我有以下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;
        }
    }
公共类RestService
{
HttpClient;
公共列表L_访问{get;private set;}
公共服务()
{
client=新的HttpClient();
client.MaxResponseContentBufferSize=25600;
}
公共异步任务RefreshDataAsync()
{
string restUrl=“localhost/ppe3JoJuAd/gsbAppliFraisV2/w_visite”;
var uri=新的uri(string.Format(restUrl,string.Empty));
尝试
{
var response=await client.GetAsync(uri);
if(响应。IsSuccessStatusCode)
{
var content=await response.content.ReadAsStringAsync();
L_Visites=JsonConvert.DeserializeObject(内容);
}
}
捕获(例外情况除外)
{
WriteLine(@“ERROR{0}”,例如Message);
}
返回L_访问;
}
}

我的问题是:如何使用id调用php Web服务,使其按预期返回json值?

要从Web服务检索单个项,只需创建另一个方法,如下所示:

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;
}
公共异步任务GetSingleDataAsync(int-id) { //将id附加到url字符串 string restUrl=“localhost/ppe3JoJuAd/gsbAppliFraisV2/w_visite/”+id; var uri=新的uri(string.Format(restUrl,string.Empty)); //创建Visite对象的新实例 var data=新访问(); 尝试 { var response=await client.GetAsync(uri); if(响应。IsSuccessStatusCode) { var content=await response.content.ReadAsStringAsync(); data=JsonConvert.DeserializeObject(content);//不要在此处使用列表 } } 捕获(例外情况除外) { WriteLine(@“ERROR{0}”,例如Message); } 返回数据; }
正如@Jason所建议的,您的url格式可能会因您的服务实现方式而异。但只要url正确,上述代码就可以工作。

在REST API中,您通常只需将ID附加到url上,如“/w_visite/7”,但它可能会根据您的服务实现方式而有所不同。