如何解决Xamarin.Android-如何从网站获取JSON
我想从网站获取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>
该如何解决?
我是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;
}
,
我在InfinityFree上托管,它具有aes.js,因此可能导致该结果。
这帮助我获得了解决方案
Setting Authorization Header of HttpClient ByetHost server passing html values "Checking your browser" with JSON String
[我在client.GetAsync之前添加了此内容]
client.DefaultRequestHeaders.Add(“ Cookie”,“ __test =
您的API服务器针对此“ http://android-householdinventory-api.epizy.com/ValidateNumber.php?number=100”端点返回HTML响应,这就是为什么它在响应中显示HTML的原因。您将必须在服务器端更正api响应。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。