I have been a tutorial to enable web service to fetch data from url. However, in the tutorial, it asks to add System.Json. I have added using System.Json, but it gives me an error.
// Here is the code that I have done in C# and it works very well
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft;
using Newtonsoft.Json;
namespace Weather_App
{
class Program
{
static void Main(string[] args)
{
Uri uri = new Uri("http://api.wunderground.com/api/key/conditions/q/CA/Houston.json");
WebRequest webRequest = WebRequest.Create(uri);
WebResponse response = webRequest.GetResponse();
StreamReader stramreader = new StreamReader(response.GetResponseStream());
String responseData = stramreader.ReadToEnd();
var outObject = JsonConvert.DeserializeObject<Component.RootObject>(responseData);
Console.WriteLine(responseData);
Console.ReadLine();
}
}
}
// Here is the code that I would like to implement same functionality in Xamarin, but having difficulty in using system.json
using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using Newtonsoft.Json;
using Xamarin.Forms;
using System.Xml;
using System.Json;
namespace Exercise21
{
public partial class MyPage : ContentPage
{
public MyPage ()
{
InitializeComponent ();
CallWebService ();
}
private async void CallWebService()
{
Uri url = new Uri ("http://api.wunderground.com/api/key/conditions/q/CA/Houston.json");
var httpReq = (HttpWebRequest)HttpWebRequest.Create (url);
httpReq.BeginGetResponse ((ar) => {
var request = (HttpWebRequest)ar.AsyncState;
using (var response = (HttpWebResponse)request.EndGetResponse (ar)) {
var s = response.GetResponseStream ();
var j = (JsonObject)JsonObject.Load (s);
var results = (from result in (JsonArray)j ["results"]
let jResult = result as JsonObject
select jResult ["text"].ToString ()).ToArray ();
RunOnUiThread (() => {
ListAdapter = new ArrayAdapter<string> (this,
Resource.Layout.TweetItemView, results);
});
}
}, httpReq);
}
}
}