gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 06:25:33 25 4
gpt4 key购买 nike

这是我第一次使用 RESTful API 和 Xamarin 等。到目前为止,我已经制作了一个简单的 REST API。我已经写了一个 GET 调用,如果我写 http://localhost:[num]/api/Name , 它将返回匹配的 Emu 信息的 JSON 文件。我已经用 Postman 对此进行了测试,所以我知道它可以工作。

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

根据我在之前的 Stack Overflow 线程中搜索的内容,我似乎缺少要求回复采用 JSON 格式的 header 。当我在 Microsoft 网站上的官方 .NET 文档中添加代码时,它给我的 Json Deserialiser 带来了问题。我还在 header 中添加了信息,以确保它返回 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 Studio 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???我已经使用文件系统方法发布了网站。因此,要访问 Postman 中的 API,我将使用 http://localhost:[port]/api/values , 在普通的 ol' 浏览器中调用我的网站就可以了 http://my_url/HelloEmu .我得到一个 403“无目录”方法作为返回...

编辑:这是 postman 代码: enter image description here

最佳答案

通常发生这种情况是因为缺少 header 或其他一些格式错误的请求,下载 RestSharp来自 NuGet 的 DLL,然后你可以使用以下内容,在 postman 中,转到“代码”:

enter image description here

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

enter image description here

关于c# - API GET 请求返回 HTML/文本而不是 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56857142/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com