Tuna
Tuna

Reputation: 22

Xamarin.Android - How to get JSON from website

I want to get JSON data from Site

Nothing shows up about it and Xamarin and I tried these 3 from youtube and it didn't work for me

        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);
        }

All Results to this:

<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>

How to fix this?

I'm new to c# and Xamarin

Upvotes: 0

Views: 267

Answers (3)

Tuna
Tuna

Reputation: 22

I was hosting on InfinityFree and it has aes.js so it may be causing that result.

This helped me in getting the solution

Setting Authorization Header of HttpClient ByetHost server passing html values "Checking your browser" with JSON String

[I added this before client.GetAsync] client.DefaultRequestHeaders.Add("Cookie", "__test=<COOKIE_CONTENT>; expires=<COOKIE_EXPIRATION>; path=/");

Upvotes: 0

Jai Gupta
Jai Gupta

Reputation: 1414

Your API server is returning HTML response for this "http://android-householdinventory-api.epizy.com/ValidateNumber.php?number=100" end point that's why it is showing HTML in response. You will have to correct the api response on server side.

Upvotes: 1

Gaurav Kaushik
Gaurav Kaushik

Reputation: 60

try this! working example

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;

    }

Upvotes: 0

Related Questions