Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# API GET请求返回HTML/文本而不是JSON_C#_Rest_Api_Xamarin.forms - Fatal编程技术网

C# API GET请求返回HTML/文本而不是JSON

C# API GET请求返回HTML/文本而不是JSON,c#,rest,api,xamarin.forms,C#,Rest,Api,Xamarin.forms,这是我第一次使用RESTfulAPI和Xamarin等。到目前为止,我已经制作了一个简单的RESTAPI。我已经编写了一个GET调用,如果我编写,它将返回一个包含匹配Emu信息的JSON文件。我已经和邮递员测试过了,所以我知道它是有效的 我现在已经编写了一个应用程序,它将调用此API以捕获此信息并显示它。到目前为止,我已经将它连接到托管API的服务器上,但是我无法让它返回JSON。相反,它似乎返回text/HTTP 从我在以前的堆栈溢出线程中搜索到的内容来看,我似乎缺少请求以JSON格式回复的标

这是我第一次使用RESTfulAPI和Xamarin等。到目前为止,我已经制作了一个简单的RESTAPI。我已经编写了一个GET调用,如果我编写,它将返回一个包含匹配Emu信息的JSON文件。我已经和邮递员测试过了,所以我知道它是有效的

我现在已经编写了一个应用程序,它将调用此API以捕获此信息并显示它。到目前为止,我已经将它连接到托管API的服务器上,但是我无法让它返回JSON。相反,它似乎返回text/HTTP

从我在以前的堆栈溢出线程中搜索到的内容来看,我似乎缺少请求以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();
我认为这是一个HTML输出。我想知道我到底做错了什么

编辑:因为HTML几乎好像返回了一条错误消息,也许这与我的url有关???我使用文件系统方法发布了该网站。因此,要访问我将使用的Postman中的API,请在常规的ol浏览器中调用我的网站。我得到一个403“无目录”方法作为回报

编辑:这是邮递员代码:

通常发生这种情况是因为缺少标题或其他格式不正确的请求,请从NuGet下载DLL,然后您可以在postman中使用以下内容,转到“代码”:

然后选择C#您将看到一个代码片段(示例):


在你的《邮差》中,你得到的结果是json吗?@AndroDevil看起来确实如此。响应的主体返回为JSON(尽管我可以在JSON和XML以及其他之间切换)@Warbler如果postman的测试有效,您可以获得该请求的代码,请参阅我的回答,使用您的Web服务器的IP而不是名称感谢您的回复。它似乎工作得很好。我的回答看起来几乎相同。如果你想看的话,我在上面的问题中贴了一个截图。
"<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>"