这是我第一次使用RESTful API和Xamarin等等。到目前为止,我已经做了一个简单的REST。我已经编写了一个GET调用,如果我编写http://localhost:[num]/api/Name,它将返回匹配Emu信息的JSON文件。我已经用邮递员测试过这个,所以我知道它是有效的。
我现在已经编写了一个应用程序,它将调用这个API来捕捉这些信息,然后显示它。到目前为止,我已经将它连接到承载API的服务器上,但无法让它返回JSON。相反,它似乎正在返回文本/HTTP。
根据我在以前的Stack溢出线程上搜索的内容,我似乎缺少了请求以JSON格式答复的标题。当我在微软网站的官方.NET文档中添加了代码时,它给我带来了Json的问题。我还在标题中添加了信息,以确保返回json。
下面是函数的代码:
async private void Submit_OnClicked(object sender, EventArgs e)
{
var nameValue = EmuName.Text;
var baseAddr = new Uri("http://my_url/HelloEmu/");
var client = new HttpClient { BaseAddress = baseAddr };
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
string url = (string)nameValue;
var returnedJson = await client.GetStringAsync(url);
Models.EmuItemModel MyEmu = JsonConvert.DeserializeObject<Models.EmuItemModel>(returnedJson);
ReturnedName.Text = MyEmu.Name;
ReturnedAge.Text = MyEmu.Age.ToString();
ReturnedWeight.Text = MyEmu.Weight.ToString();
我的代码实际上在行ReturnedWeight.Text = MyEmu.Weight.ToString()
上出错,但我猜想在反序列化对象的过程中会出现更严重的问题,因为在调试器中运行对象时,它似乎“跳过”了前面的两行。
当我在Visual 2019中运行它时,"returnedJson“的值如下:
"<html><head><meta http-equiv=\"refresh\" content=\"0;url=http://lookup.t-mobile.com/search/?q=http://my_url/HelloEmu/Keith&t=0\"/></head><body><script>window.location=\"http://lookup.t-mobile.com/search/?q=\"+escape(window.location)+\"&r=\"+escape(document.referrer)+\"&t=0\";</script></body></html>"
我认为这是一个HTML输出。我很想知道我到底做错了什么!
编辑:因为HTML看起来几乎是在返回错误消息,也许它可以使用我的url?我使用文件系统方法发布了这个网站。因此,要在邮递员中访问API,我将使用http://localhost:[port]/api/values,在普通的ol‘浏览器中调用我的网站使其成为url/HelloEmu。我得到403个“没有目录”的方法作为回报..。
编辑:这是邮递员代码:在这里输入图像描述
发布于 2019-07-02 18:07:24
通常发生这种情况是因为缺少标头或其他格式错误的请求,请从RestSharp下载NuGet DLL,然后在NuGet中使用以下代码:
然后选择C#,您将看到一个代码片段(示例):
https://stackoverflow.com/questions/56857142
复制相似问题