我一直是一个启用Web服务从url获取数据的教程。但是,在本教程中,它要求添加System.Json。我添加了使用System.Json,但它给了我一个错误。
//这是我在C#中完成的代码,它运行良好
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();
}
}
}
//这是我想在Xamarin中实现相同功能但是在使用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);
}
}
}
答案 0 :(得分:1)
右键单击Referenes,然后单击Add Refernce。在“搜索”框中键入“System.Json”。然后单击旁边的复选框。
答案 1 :(得分:0)
如果我错了,请纠正我,您需要等价的JsonObjectRequest
.NET,对吗?
检查您using的库的文档
答案 2 :(得分:-1)
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
if (response.StatusCode != HttpStatusCode.OK)
Console.Out.WriteLine("Error fetching data. Server returned status code: {0}", response.StatusCode);
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
var content = reader.ReadToEnd();
var Results = JsonConvert.DeserializeObject<dynamic>(content);
if (string.IsNullOrWhiteSpace(content))
{
Console.Out.WriteLine("Response contained empty body...");
}
else
{
Console.Out.WriteLine("Response Body: \r\n {0}", content);
}
}
}
你可以尝试Json.Net添加引用然后尝试使用jsonConvert
我希望这对你有帮助