Cat Facts API를 사용하여 재미있게 연습하고 있습니다. 내가 겪고있는 문제는 한 번에 하나씩 '고양이 사실'을 표시하는 것이 아닙니다. 그러나 나는 합계 5 개의 사실을 무작위로 표시하려고합니다. 예를 들어 사용자가 버튼을 클릭하면 3 개의 사실을 얻고, 사용자가 버튼을 다시 클릭하면 1 개의 사실이 표시되고 사용자는 3 번째 버튼을 클릭하고 1, 2, 3, 4 또는 5 개의 사실을 얻습니다. 임 하나의 활동/클래스에서 모든 것을 시도. http://catfacts-api.appspot.com/api/facts?number=5은 5 개의 사실을 표시하고 http://catfacts-api.appspot.com/api/facts은 하나를 반환합니다. 이C# webrequest 임의 값을 사용하여 결과 값을 출력하는 Json 값 반환
public class MainActivity : Activity
{
private ImageButton _mrWhiskersButton;
private TextView _catFactsTextView;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.Main);
_mrWhiskersButton = FindViewById<ImageButton>(Resource.Id.imageCatButton);
_catFactsTextView = FindViewById<TextView>(Resource.Id.catFactsText);
_mrWhiskersButton.Click += async delegate
{
string url = "Http://catfacts-api.appspot.com/api/facts";
JsonValue json = await FetchInfoAsync(url);
updateCats(json);
};
}
public async Task<JsonValue> FetchInfoAsync(string url)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri(url));
request.ContentType = "application/json";
request.Method = "GET";
using (WebResponse response = await request.GetResponseAsync())
{
using (Stream stream = response.GetResponseStream())
{
JsonValue jsonDoc = await Task.Run(() => JsonValue.Load(stream));
Console.Out.WriteLine("Response: {0}", jsonDoc.ToString());
return jsonDoc;
}
}
}
private void updateCats(JsonValue json)
{
_catFactsTextView.Text = json["facts"][0];
}
}
}
이 정확하게 작동하지 않는 것을 명확하지 않다, 또는 어떤이가 아니라는 것을 일을해야하는데, 내 코드는 지금까지 모습입니다. 게시 한 내용을 다시 읽고 문제가 명확하게 나타나는지 확인하십시오. – Jason
링크를 클릭하면 http://catfacts-api.appspot.com/api/facts?number=5 링크를 클릭하면 5 개의 무작위 정보가 생성됩니다. 지금은 내 현재는 1 번 밖에 보이지 않습니다. 나는 무언가를해야한다고 생각합니다. 무작위 무작위 = 새로운 무작위(); 왜냐하면 나는 임의의 사실을 얻기 위해 imageButton을 클릭 할 수 있기를 원하기 때문에 사실의 무작위 수이기 때문에 최대 5 개의 사실까지 표시됩니다. 나는 이것이 혼란을 없애기를 바란다. –
당신은 "/ api/facts"를 호출합니다 - "사실 수"뒤에 "? number = 5"또는 다른 인수를 포함시키지 마십시오. 여러 팩트를 반환하더라도 updateCats() 메서드는 첫 번째 매개 변수 만 표시합니다. – Jason