Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android-如何从网站获取JSON_Json_Xamarin_Xamarin.android - Fatal编程技术网

Android-如何从网站获取JSON

Android-如何从网站获取JSON,json,xamarin,xamarin.android,Json,Xamarin,Xamarin.android,我想从站点获取JSON数据 没有显示任何信息,Xamarin和我在youtube上尝试了这3个,但对我无效 public void ValidateNumber() { string URL = "http://android-householdinventory-api.epizy.com/ValidateNumber.php?"; WebClient client = new WebClien

我想从站点获取JSON数据

没有显示任何信息,Xamarin和我在youtube上尝试了这3个,但对我无效

        public void ValidateNumber()
        {
            string URL = "http://android-householdinventory-api.epizy.com/ValidateNumber.php?";
            WebClient client = new WebClient();
            Uri uri = new Uri(URL + "number=10");
            client.DownloadDataAsync(uri);
            client.DownloadDataCompleted += Client_DownloadDataCompleted;
        }

        private void Client_DownloadDataCompleted(object sender, DownloadDataCompletedEventArgs e)
        {
            //throw new NotImplementedException();
            string json = Encoding.UTF8.GetString(e.Result);
            System.Console.WriteLine(json);
        }

        public async void Validationv2()
        {
            using (var client = new HttpClient())
            {
                var uri = "http://android-householdinventory-api.epizy.com/ValidateNumber.php?number=100";
                var Result = await client.GetStringAsync(uri);
                System.Console.WriteLine(Result);
            }
        }

        public void Validationv3()
        {
            WebClient wclient = new WebClient();
            string a = wclient.DownloadString("http://android-householdinventory-api.epizy.com/ValidateNumber.php?number=100");
            System.Console.WriteLine(a);
        }
所有结果如下:

<html><body><script type="text/javascript" src="/aes.js" ></script><script>function toNumbers(d){var e=[];d.replace(/(..)/g,function(d){e.push(parseInt(d,16))});return e}function toHex(){for(var d=[],d=1==arguments.length&&arguments[0].constructor==Array?arguments[0]:arguments,e="",f=0;f<d.length;f++)e+=(16>d[f]?"0":"")+d[f].toString(16);return e.toLowerCase()}var a=toNumbers("f655ba9d09a112d4968c63579db590b4"),b=toNumbers("98344c2eee86c3994890592585b49f80"),c=toNumbers("304feeb55638873348a9f20961a94049");document.cookie="__test="+toHex(slowAES.decrypt(c,2,a,b))+"; expires=Thu, 31-Dec-37 23:55:55 GMT; path=/"; location.href="http://android-householdinventory-api.epizy.com/ValidateNumber.php?number=10&i=1";</script><noscript>This site requires Javascript to work, please enable Javascript in your browser or use a browser with Javascript support</noscript></body></html>
函数toNumbers(d){var e=[];d.replace(/(..)/g,函数(d){e.push(parseInt(d,16));将e}函数返回hex(){for(var d=[],d=1==参数。长度和参数[0]。构造函数==数组?参数[0]:参数,e=“”,f=0;fd[f]?“0:”)+d[f]。toString(16);返回e.toLowerCase()}var a=toNumbers(“F655BA9D0968C635B4B=Tonb4b”)(“98344C2EE86C3994890592585B49F80”),c=toNumbers(“304feeb5563883348a9f20961a94049”);document.cookie=“u test=“+toHex(slowAES.decrypt(c,2,a,b))+”;expires=Thu,37年12月31日23:55:55 GMT;路径=/“位置。href=”http://android-householdinventory-api.epizy.com/ValidateNumber.php?number=10&i=1“本网站需要Javascript才能工作,请在浏览器中启用Javascript或使用支持Javascript的浏览器
如何解决这个问题


我不熟悉c#和Xamarin,试试这个!工作示例

private async void btn_Login_Clicked(object sender, EventArgs e)
 {
 List<LoginDetails> UserDetails = await _services.LoginAsync(string username,    string password)
 }




  public async Task<List<LoginDetails>> LoginAsync(string username, string password)
    {
        List<LoginDetails> UserList;
        using (var client = new HttpClient())
        {
            LoginDetails Ld = new LoginDetails();
            Ld.UserName = username;
            Ld.Password = password;
            string url = "";
            //HttpClient client = new HttpClient();
            string jsonData = JsonConvert.SerializeObject(Ld);
            StringContent content = new StringContent(jsonData, Encoding.UTF8, "application/json");
            HttpResponseMessage response = await client.PostAsync(url, content);
            string result = await response.Content.ReadAsStringAsync();


            UserList = JsonConvert.DeserializeObject<List<LoginDetails>>(result);
            //loginDetails = new ObservableCollection<LoginDetails>(UserList);
        }
        return UserList;

    }
private async void btn\u登录\u已单击(对象发送方,事件参数e)
{
List UserDetails=wait_services.LoginAsync(字符串用户名、字符串密码)
}
公共异步任务LoginAsync(字符串用户名、字符串密码)
{
列表用户列表;
使用(var client=new HttpClient())
{
LoginDetails Ld=新的LoginDetails();
Ld.UserName=用户名;
Ld.Password=密码;
字符串url=“”;
//HttpClient=新的HttpClient();
字符串jsonData=JsonConvert.SerializeObject(Ld);
StringContent=新的StringContent(jsonData,Encoding.UTF8,“application/json”);
HttpResponseMessage response=wait client.PostAsync(url、内容);
字符串结果=wait response.Content.ReadAsStringAsync();
UserList=JsonConvert.DeserializeObject(结果);
//loginDetails=新的ObservableCollection(用户列表);
}
返回用户列表;
}

我是在InfinityFree上托管的,它有aes.js,所以可能是它导致了这个结果

这有助于我找到解决方案

[我在client.GetAsync之前添加了这个]
client.DefaultRequestHeaders.Add(“Cookie”,“测试=;过期=;路径=/”;

您的API服务器正在为此返回HTML响应”http://android-householdinventory-api.epizy.com/ValidateNumber.php?number=100“结束点这就是为什么它显示HTML作为响应。您必须更正服务器端的api响应。

使用
HttpClient
而不是
WebClient
:@SushiHangover我尝试了HttpClient,但结果相同,public async void Validationv2(){using(var client=new HttpClient()){var uri=“”;var Result=await client.GetStringAsync(uri);System.Console.WriteLine(Result);}}我做错了吗?我会试试看,顺便问一下,我需要传递json数据吗?是的,StringContent=new StringContent(jsonData,Encoding.UTF8,“application/json”);,您可以使用邮递员传递数据并检查响应。